You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2016/08/22 18:30:38 UTC

[01/19] tinkerpop git commit: TINKERPOP-1274: GraphSON 2.0.

Repository: tinkerpop
Updated Branches:
  refs/heads/master e50f7167e -> f929db03a


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-classic-normalized-v2d0.json
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-classic-normalized-v2d0.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-classic-normalized-v2d0.json
new file mode 100644
index 0000000..cb08148
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-classic-normalized-v2d0.json
@@ -0,0 +1,6 @@
+{"id":1,"label":"vertex","outE":{"created":[{"id":9,"inV":3,"properties":{"weight":0.4}}],"knows":[{"id":7,"inV":2,"properties":{"weight":0.5}},{"id":8,"inV":4,"properties":{"weight":1.0}}]},"properties":{"age":[{"id":2,"value":29}],"name":[{"id":0,"value":"marko"}]}}
+{"id":2,"label":"vertex","inE":{"knows":[{"id":7,"outV":1,"properties":{"weight":0.5}}]},"properties":{"age":[{"id":4,"value":27}],"name":[{"id":3,"value":"vadas"}]}}
+{"id":3,"label":"vertex","inE":{"created":[{"id":11,"outV":4,"properties":{"weight":0.4}},{"id":12,"outV":6,"properties":{"weight":0.2}},{"id":9,"outV":1,"properties":{"weight":0.4}}]},"properties":{"lang":[{"id":6,"value":"java"}],"name":[{"id":5,"value":"lop"}]}}
+{"id":4,"label":"vertex","inE":{"knows":[{"id":8,"outV":1,"properties":{"weight":1.0}}]},"outE":{"created":[{"id":10,"inV":5,"properties":{"weight":1.0}},{"id":11,"inV":3,"properties":{"weight":0.4}}]},"properties":{"age":[{"id":8,"value":32}],"name":[{"id":7,"value":"josh"}]}}
+{"id":5,"label":"vertex","inE":{"created":[{"id":10,"outV":4,"properties":{"weight":1.0}}]},"properties":{"lang":[{"id":10,"value":"java"}],"name":[{"id":9,"value":"ripple"}]}}
+{"id":6,"label":"vertex","outE":{"created":[{"id":12,"inV":3,"properties":{"weight":0.2}}]},"properties":{"age":[{"id":12,"value":35}],"name":[{"id":11,"value":"peter"}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-classic-v2d0-typed.json
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-classic-v2d0-typed.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-classic-v2d0-typed.json
new file mode 100644
index 0000000..56956ea
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-classic-v2d0-typed.json
@@ -0,0 +1,6 @@
+{"id":{"@type":"gremlin:int32","@value":1},"label":"vertex","outE":{"created":[{"id":{"@type":"gremlin:int32","@value":9},"inV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:float","@value":0.4}}}],"knows":[{"id":{"@type":"gremlin:int32","@value":7},"inV":{"@type":"gremlin:int32","@value":2},"properties":{"weight":{"@type":"gremlin:float","@value":0.5}}},{"id":{"@type":"gremlin:int32","@value":8},"inV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:float","@value":1.0}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int32","@value":0},"value":"marko"}],"age":[{"id":{"@type":"gremlin:int32","@value":2},"value":{"@type":"gremlin:int32","@value":29}}]}}
+{"id":{"@type":"gremlin:int32","@value":2},"label":"vertex","inE":{"knows":[{"id":{"@type":"gremlin:int32","@value":7},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:float","@value":0.5}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int32","@value":3},"value":"vadas"}],"age":[{"id":{"@type":"gremlin:int32","@value":4},"value":{"@type":"gremlin:int32","@value":27}}]}}
+{"id":{"@type":"gremlin:int32","@value":3},"label":"vertex","inE":{"created":[{"id":{"@type":"gremlin:int32","@value":9},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:float","@value":0.4}}},{"id":{"@type":"gremlin:int32","@value":11},"outV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:float","@value":0.4}}},{"id":{"@type":"gremlin:int32","@value":12},"outV":{"@type":"gremlin:int32","@value":6},"properties":{"weight":{"@type":"gremlin:float","@value":0.2}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int32","@value":5},"value":"lop"}],"lang":[{"id":{"@type":"gremlin:int32","@value":6},"value":"java"}]}}
+{"id":{"@type":"gremlin:int32","@value":4},"label":"vertex","inE":{"knows":[{"id":{"@type":"gremlin:int32","@value":8},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:float","@value":1.0}}}]},"outE":{"created":[{"id":{"@type":"gremlin:int32","@value":10},"inV":{"@type":"gremlin:int32","@value":5},"properties":{"weight":{"@type":"gremlin:float","@value":1.0}}},{"id":{"@type":"gremlin:int32","@value":11},"inV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:float","@value":0.4}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int32","@value":7},"value":"josh"}],"age":[{"id":{"@type":"gremlin:int32","@value":8},"value":{"@type":"gremlin:int32","@value":32}}]}}
+{"id":{"@type":"gremlin:int32","@value":5},"label":"vertex","inE":{"created":[{"id":{"@type":"gremlin:int32","@value":10},"outV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:float","@value":1.0}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int32","@value":9},"value":"ripple"}],"lang":[{"id":{"@type":"gremlin:int32","@value":10},"value":"java"}]}}
+{"id":{"@type":"gremlin:int32","@value":6},"label":"vertex","outE":{"created":[{"id":{"@type":"gremlin:int32","@value":12},"inV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:float","@value":0.2}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int32","@value":11},"value":"peter"}],"age":[{"id":{"@type":"gremlin:int32","@value":12},"value":{"@type":"gremlin:int32","@value":35}}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-classic-v2d0.json
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-classic-v2d0.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-classic-v2d0.json
new file mode 100644
index 0000000..5ccfe05
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-classic-v2d0.json
@@ -0,0 +1,6 @@
+{"id":1,"label":"vertex","outE":{"created":[{"id":9,"inV":3,"properties":{"weight":0.4}}],"knows":[{"id":7,"inV":2,"properties":{"weight":0.5}},{"id":8,"inV":4,"properties":{"weight":1.0}}]},"properties":{"name":[{"id":0,"value":"marko"}],"age":[{"id":2,"value":29}]}}
+{"id":2,"label":"vertex","inE":{"knows":[{"id":7,"outV":1,"properties":{"weight":0.5}}]},"properties":{"name":[{"id":3,"value":"vadas"}],"age":[{"id":4,"value":27}]}}
+{"id":3,"label":"vertex","inE":{"created":[{"id":9,"outV":1,"properties":{"weight":0.4}},{"id":11,"outV":4,"properties":{"weight":0.4}},{"id":12,"outV":6,"properties":{"weight":0.2}}]},"properties":{"name":[{"id":5,"value":"lop"}],"lang":[{"id":6,"value":"java"}]}}
+{"id":4,"label":"vertex","inE":{"knows":[{"id":8,"outV":1,"properties":{"weight":1.0}}]},"outE":{"created":[{"id":10,"inV":5,"properties":{"weight":1.0}},{"id":11,"inV":3,"properties":{"weight":0.4}}]},"properties":{"name":[{"id":7,"value":"josh"}],"age":[{"id":8,"value":32}]}}
+{"id":5,"label":"vertex","inE":{"created":[{"id":10,"outV":4,"properties":{"weight":1.0}}]},"properties":{"name":[{"id":9,"value":"ripple"}],"lang":[{"id":10,"value":"java"}]}}
+{"id":6,"label":"vertex","outE":{"created":[{"id":12,"inV":3,"properties":{"weight":0.2}}]},"properties":{"name":[{"id":11,"value":"peter"}],"age":[{"id":12,"value":35}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-crew-v2d0-typed.json
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-crew-v2d0-typed.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-crew-v2d0-typed.json
new file mode 100644
index 0000000..e688520
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-crew-v2d0-typed.json
@@ -0,0 +1,6 @@
+{"id":{"@type":"gremlin:int32","@value":1},"label":"person","outE":{"uses":[{"id":{"@type":"gremlin:int32","@value":16},"inV":{"@type":"gremlin:int32","@value":11},"properties":{"skill":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":15},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"skill":{"@type":"gremlin:int32","@value":4}}}],"develops":[{"id":{"@type":"gremlin:int32","@value":13},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"since":{"@type":"gremlin:int32","@value":2009}}},{"id":{"@type":"gremlin:int32","@value":14},"inV":{"@type":"gremlin:int32","@value":11},"properties":{"since":{"@type":"gremlin:int32","@value":2010}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":0},"value":"marko"}],"location":[{"id":{"@type":"gremlin:int64","@value":6},"value":"san diego","properties":{"startTime":{"@type":"gremlin:int32","@value":1997},"endTime":{"@type":"gremlin:int32","@value":2001}}},{"id":{"@type":"gremlin:int6
 4","@value":7},"value":"santa cruz","properties":{"startTime":{"@type":"gremlin:int32","@value":2001},"endTime":{"@type":"gremlin:int32","@value":2004}}},{"id":{"@type":"gremlin:int64","@value":8},"value":"brussels","properties":{"startTime":{"@type":"gremlin:int32","@value":2004},"endTime":{"@type":"gremlin:int32","@value":2005}}},{"id":{"@type":"gremlin:int64","@value":9},"value":"santa fe","properties":{"startTime":{"@type":"gremlin:int32","@value":2005}}}]}}
+{"id":{"@type":"gremlin:int32","@value":7},"label":"person","outE":{"uses":[{"id":{"@type":"gremlin:int32","@value":19},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"skill":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":20},"inV":{"@type":"gremlin:int32","@value":11},"properties":{"skill":{"@type":"gremlin:int32","@value":4}}}],"develops":[{"id":{"@type":"gremlin:int32","@value":17},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"since":{"@type":"gremlin:int32","@value":2010}}},{"id":{"@type":"gremlin:int32","@value":18},"inV":{"@type":"gremlin:int32","@value":11},"properties":{"since":{"@type":"gremlin:int32","@value":2011}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":1},"value":"stephen"}],"location":[{"id":{"@type":"gremlin:int64","@value":10},"value":"centreville","properties":{"startTime":{"@type":"gremlin:int32","@value":1990},"endTime":{"@type":"gremlin:int32","@value":2000}}},{"id":{"@type":"gremlin
 :int64","@value":11},"value":"dulles","properties":{"startTime":{"@type":"gremlin:int32","@value":2000},"endTime":{"@type":"gremlin:int32","@value":2006}}},{"id":{"@type":"gremlin:int64","@value":12},"value":"purcellville","properties":{"startTime":{"@type":"gremlin:int32","@value":2006}}}]}}
+{"id":{"@type":"gremlin:int32","@value":8},"label":"person","outE":{"uses":[{"id":{"@type":"gremlin:int32","@value":22},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"skill":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":23},"inV":{"@type":"gremlin:int32","@value":11},"properties":{"skill":{"@type":"gremlin:int32","@value":3}}}],"develops":[{"id":{"@type":"gremlin:int32","@value":21},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"since":{"@type":"gremlin:int32","@value":2012}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":2},"value":"matthias"}],"location":[{"id":{"@type":"gremlin:int64","@value":13},"value":"bremen","properties":{"startTime":{"@type":"gremlin:int32","@value":2004},"endTime":{"@type":"gremlin:int32","@value":2007}}},{"id":{"@type":"gremlin:int64","@value":14},"value":"baltimore","properties":{"startTime":{"@type":"gremlin:int32","@value":2007},"endTime":{"@type":"gremlin:int32","@value":2011}
 }},{"id":{"@type":"gremlin:int64","@value":15},"value":"oakland","properties":{"startTime":{"@type":"gremlin:int32","@value":2011},"endTime":{"@type":"gremlin:int32","@value":2014}}},{"id":{"@type":"gremlin:int64","@value":16},"value":"seattle","properties":{"startTime":{"@type":"gremlin:int32","@value":2014}}}]}}
+{"id":{"@type":"gremlin:int32","@value":9},"label":"person","outE":{"uses":[{"id":{"@type":"gremlin:int32","@value":24},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"skill":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":25},"inV":{"@type":"gremlin:int32","@value":11},"properties":{"skill":{"@type":"gremlin:int32","@value":3}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":3},"value":"daniel"}],"location":[{"id":{"@type":"gremlin:int64","@value":17},"value":"spremberg","properties":{"startTime":{"@type":"gremlin:int32","@value":1982},"endTime":{"@type":"gremlin:int32","@value":2005}}},{"id":{"@type":"gremlin:int64","@value":18},"value":"kaiserslautern","properties":{"startTime":{"@type":"gremlin:int32","@value":2005},"endTime":{"@type":"gremlin:int32","@value":2009}}},{"id":{"@type":"gremlin:int64","@value":19},"value":"aachen","properties":{"startTime":{"@type":"gremlin:int32","@value":2009}}}]}}
+{"id":{"@type":"gremlin:int32","@value":10},"label":"software","inE":{"uses":[{"id":{"@type":"gremlin:int32","@value":19},"outV":{"@type":"gremlin:int32","@value":7},"properties":{"skill":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":22},"outV":{"@type":"gremlin:int32","@value":8},"properties":{"skill":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":24},"outV":{"@type":"gremlin:int32","@value":9},"properties":{"skill":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":15},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"skill":{"@type":"gremlin:int32","@value":4}}}],"develops":[{"id":{"@type":"gremlin:int32","@value":17},"outV":{"@type":"gremlin:int32","@value":7},"properties":{"since":{"@type":"gremlin:int32","@value":2010}}},{"id":{"@type":"gremlin:int32","@value":21},"outV":{"@type":"gremlin:int32","@value":8},"properties":{"since":{"@type":"gremlin:int32","@value":2012}}},{"id":
 {"@type":"gremlin:int32","@value":13},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"since":{"@type":"gremlin:int32","@value":2009}}}]},"outE":{"traverses":[{"id":{"@type":"gremlin:int32","@value":26},"inV":{"@type":"gremlin:int32","@value":11}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":4},"value":"gremlin"}]}}
+{"id":{"@type":"gremlin:int32","@value":11},"label":"software","inE":{"traverses":[{"id":{"@type":"gremlin:int32","@value":26},"outV":{"@type":"gremlin:int32","@value":10}}],"uses":[{"id":{"@type":"gremlin:int32","@value":16},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"skill":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":20},"outV":{"@type":"gremlin:int32","@value":7},"properties":{"skill":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":23},"outV":{"@type":"gremlin:int32","@value":8},"properties":{"skill":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":25},"outV":{"@type":"gremlin:int32","@value":9},"properties":{"skill":{"@type":"gremlin:int32","@value":3}}}],"develops":[{"id":{"@type":"gremlin:int32","@value":18},"outV":{"@type":"gremlin:int32","@value":7},"properties":{"since":{"@type":"gremlin:int32","@value":2011}}},{"id":{"@type":"gremlin:int32","@value":14},"outV":{"@
 type":"gremlin:int32","@value":1},"properties":{"since":{"@type":"gremlin:int32","@value":2010}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":5},"value":"tinkergraph"}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-crew-v2d0.json
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-crew-v2d0.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-crew-v2d0.json
new file mode 100644
index 0000000..2165e4d
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-crew-v2d0.json
@@ -0,0 +1,6 @@
+{"id":1,"label":"person","outE":{"uses":[{"id":16,"inV":11,"properties":{"skill":5}},{"id":15,"inV":10,"properties":{"skill":4}}],"develops":[{"id":13,"inV":10,"properties":{"since":2009}},{"id":14,"inV":11,"properties":{"since":2010}}]},"properties":{"name":[{"id":0,"value":"marko"}],"location":[{"id":6,"value":"san diego","properties":{"startTime":1997,"endTime":2001}},{"id":7,"value":"santa cruz","properties":{"startTime":2001,"endTime":2004}},{"id":8,"value":"brussels","properties":{"startTime":2004,"endTime":2005}},{"id":9,"value":"santa fe","properties":{"startTime":2005}}]}}
+{"id":7,"label":"person","outE":{"uses":[{"id":19,"inV":10,"properties":{"skill":5}},{"id":20,"inV":11,"properties":{"skill":4}}],"develops":[{"id":17,"inV":10,"properties":{"since":2010}},{"id":18,"inV":11,"properties":{"since":2011}}]},"properties":{"name":[{"id":1,"value":"stephen"}],"location":[{"id":10,"value":"centreville","properties":{"startTime":1990,"endTime":2000}},{"id":11,"value":"dulles","properties":{"startTime":2000,"endTime":2006}},{"id":12,"value":"purcellville","properties":{"startTime":2006}}]}}
+{"id":8,"label":"person","outE":{"uses":[{"id":22,"inV":10,"properties":{"skill":3}},{"id":23,"inV":11,"properties":{"skill":3}}],"develops":[{"id":21,"inV":10,"properties":{"since":2012}}]},"properties":{"name":[{"id":2,"value":"matthias"}],"location":[{"id":13,"value":"bremen","properties":{"startTime":2004,"endTime":2007}},{"id":14,"value":"baltimore","properties":{"startTime":2007,"endTime":2011}},{"id":15,"value":"oakland","properties":{"startTime":2011,"endTime":2014}},{"id":16,"value":"seattle","properties":{"startTime":2014}}]}}
+{"id":9,"label":"person","outE":{"uses":[{"id":24,"inV":10,"properties":{"skill":5}},{"id":25,"inV":11,"properties":{"skill":3}}]},"properties":{"name":[{"id":3,"value":"daniel"}],"location":[{"id":17,"value":"spremberg","properties":{"startTime":1982,"endTime":2005}},{"id":18,"value":"kaiserslautern","properties":{"startTime":2005,"endTime":2009}},{"id":19,"value":"aachen","properties":{"startTime":2009}}]}}
+{"id":10,"label":"software","inE":{"uses":[{"id":19,"outV":7,"properties":{"skill":5}},{"id":22,"outV":8,"properties":{"skill":3}},{"id":24,"outV":9,"properties":{"skill":5}},{"id":15,"outV":1,"properties":{"skill":4}}],"develops":[{"id":17,"outV":7,"properties":{"since":2010}},{"id":21,"outV":8,"properties":{"since":2012}},{"id":13,"outV":1,"properties":{"since":2009}}]},"outE":{"traverses":[{"id":26,"inV":11}]},"properties":{"name":[{"id":4,"value":"gremlin"}]}}
+{"id":11,"label":"software","inE":{"traverses":[{"id":26,"outV":10}],"uses":[{"id":16,"outV":1,"properties":{"skill":5}},{"id":20,"outV":7,"properties":{"skill":4}},{"id":23,"outV":8,"properties":{"skill":3}},{"id":25,"outV":9,"properties":{"skill":3}}],"develops":[{"id":18,"outV":7,"properties":{"since":2011}},{"id":14,"outV":1,"properties":{"since":2010}}]},"properties":{"name":[{"id":5,"value":"tinkergraph"}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-modern-normalized-v2d0.json
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-modern-normalized-v2d0.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-modern-normalized-v2d0.json
new file mode 100644
index 0000000..8c259ea
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-modern-normalized-v2d0.json
@@ -0,0 +1,6 @@
+{"id":1,"label":"person","outE":{"created":[{"id":9,"inV":3,"properties":{"weight":0.4}}],"knows":[{"id":7,"inV":2,"properties":{"weight":0.5}},{"id":8,"inV":4,"properties":{"weight":1.0}}]},"properties":{"age":[{"id":1,"value":29}],"name":[{"id":0,"value":"marko"}]}}
+{"id":2,"label":"person","inE":{"knows":[{"id":7,"outV":1,"properties":{"weight":0.5}}]},"properties":{"age":[{"id":3,"value":27}],"name":[{"id":2,"value":"vadas"}]}}
+{"id":3,"label":"software","inE":{"created":[{"id":11,"outV":4,"properties":{"weight":0.4}},{"id":12,"outV":6,"properties":{"weight":0.2}},{"id":9,"outV":1,"properties":{"weight":0.4}}]},"properties":{"lang":[{"id":5,"value":"java"}],"name":[{"id":4,"value":"lop"}]}}
+{"id":4,"label":"person","inE":{"knows":[{"id":8,"outV":1,"properties":{"weight":1.0}}]},"outE":{"created":[{"id":10,"inV":5,"properties":{"weight":1.0}},{"id":11,"inV":3,"properties":{"weight":0.4}}]},"properties":{"age":[{"id":7,"value":32}],"name":[{"id":6,"value":"josh"}]}}
+{"id":5,"label":"software","inE":{"created":[{"id":10,"outV":4,"properties":{"weight":1.0}}]},"properties":{"lang":[{"id":9,"value":"java"}],"name":[{"id":8,"value":"ripple"}]}}
+{"id":6,"label":"person","outE":{"created":[{"id":12,"inV":3,"properties":{"weight":0.2}}]},"properties":{"age":[{"id":11,"value":35}],"name":[{"id":10,"value":"peter"}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-modern-v2d0-typed.json
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-modern-v2d0-typed.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-modern-v2d0-typed.json
new file mode 100644
index 0000000..9a297c3
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-modern-v2d0-typed.json
@@ -0,0 +1,6 @@
+{"id":{"@type":"gremlin:int32","@value":1},"label":"person","outE":{"created":[{"id":{"@type":"gremlin:int32","@value":9},"inV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:double","@value":0.4}}}],"knows":[{"id":{"@type":"gremlin:int32","@value":7},"inV":{"@type":"gremlin:int32","@value":2},"properties":{"weight":{"@type":"gremlin:double","@value":0.5}}},{"id":{"@type":"gremlin:int32","@value":8},"inV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:double","@value":1.0}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":0},"value":"marko"}],"age":[{"id":{"@type":"gremlin:int64","@value":1},"value":{"@type":"gremlin:int32","@value":29}}]}}
+{"id":{"@type":"gremlin:int32","@value":2},"label":"person","inE":{"knows":[{"id":{"@type":"gremlin:int32","@value":7},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:double","@value":0.5}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":2},"value":"vadas"}],"age":[{"id":{"@type":"gremlin:int64","@value":3},"value":{"@type":"gremlin:int32","@value":27}}]}}
+{"id":{"@type":"gremlin:int32","@value":3},"label":"software","inE":{"created":[{"id":{"@type":"gremlin:int32","@value":9},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:double","@value":0.4}}},{"id":{"@type":"gremlin:int32","@value":11},"outV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:double","@value":0.4}}},{"id":{"@type":"gremlin:int32","@value":12},"outV":{"@type":"gremlin:int32","@value":6},"properties":{"weight":{"@type":"gremlin:double","@value":0.2}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":4},"value":"lop"}],"lang":[{"id":{"@type":"gremlin:int64","@value":5},"value":"java"}]}}
+{"id":{"@type":"gremlin:int32","@value":4},"label":"person","inE":{"knows":[{"id":{"@type":"gremlin:int32","@value":8},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:double","@value":1.0}}}]},"outE":{"created":[{"id":{"@type":"gremlin:int32","@value":10},"inV":{"@type":"gremlin:int32","@value":5},"properties":{"weight":{"@type":"gremlin:double","@value":1.0}}},{"id":{"@type":"gremlin:int32","@value":11},"inV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:double","@value":0.4}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":6},"value":"josh"}],"age":[{"id":{"@type":"gremlin:int64","@value":7},"value":{"@type":"gremlin:int32","@value":32}}]}}
+{"id":{"@type":"gremlin:int32","@value":5},"label":"software","inE":{"created":[{"id":{"@type":"gremlin:int32","@value":10},"outV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:double","@value":1.0}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":8},"value":"ripple"}],"lang":[{"id":{"@type":"gremlin:int64","@value":9},"value":"java"}]}}
+{"id":{"@type":"gremlin:int32","@value":6},"label":"person","outE":{"created":[{"id":{"@type":"gremlin:int32","@value":12},"inV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:double","@value":0.2}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":10},"value":"peter"}],"age":[{"id":{"@type":"gremlin:int64","@value":11},"value":{"@type":"gremlin:int32","@value":35}}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-modern-v2d0.json
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-modern-v2d0.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-modern-v2d0.json
new file mode 100644
index 0000000..18c265d
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-modern-v2d0.json
@@ -0,0 +1,6 @@
+{"id":1,"label":"person","outE":{"created":[{"id":9,"inV":3,"properties":{"weight":0.4}}],"knows":[{"id":7,"inV":2,"properties":{"weight":0.5}},{"id":8,"inV":4,"properties":{"weight":1.0}}]},"properties":{"name":[{"id":0,"value":"marko"}],"age":[{"id":1,"value":29}]}}
+{"id":2,"label":"person","inE":{"knows":[{"id":7,"outV":1,"properties":{"weight":0.5}}]},"properties":{"name":[{"id":2,"value":"vadas"}],"age":[{"id":3,"value":27}]}}
+{"id":3,"label":"software","inE":{"created":[{"id":9,"outV":1,"properties":{"weight":0.4}},{"id":11,"outV":4,"properties":{"weight":0.4}},{"id":12,"outV":6,"properties":{"weight":0.2}}]},"properties":{"name":[{"id":4,"value":"lop"}],"lang":[{"id":5,"value":"java"}]}}
+{"id":4,"label":"person","inE":{"knows":[{"id":8,"outV":1,"properties":{"weight":1.0}}]},"outE":{"created":[{"id":10,"inV":5,"properties":{"weight":1.0}},{"id":11,"inV":3,"properties":{"weight":0.4}}]},"properties":{"name":[{"id":6,"value":"josh"}],"age":[{"id":7,"value":32}]}}
+{"id":5,"label":"software","inE":{"created":[{"id":10,"outV":4,"properties":{"weight":1.0}}]},"properties":{"name":[{"id":8,"value":"ripple"}],"lang":[{"id":9,"value":"java"}]}}
+{"id":6,"label":"person","outE":{"created":[{"id":12,"inV":3,"properties":{"weight":0.2}}]},"properties":{"name":[{"id":10,"value":"peter"}],"age":[{"id":11,"value":35}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/tinkergraph-gremlin/pom.xml
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/pom.xml b/tinkergraph-gremlin/pom.xml
index 4ee4878..85f7cc9 100644
--- a/tinkergraph-gremlin/pom.xml
+++ b/tinkergraph-gremlin/pom.xml
@@ -76,7 +76,7 @@ limitations under the License.
             </activation>
 
             <properties>
-                <io.tmp.dir>${project.build.directory}/tinkerpop-io</io.tmp.dir>
+                <io.tmp.dir>${project.build.directory}/test-case-data/TinkerGraphTest/tinkerpop-io</io.tmp.dir>
             </properties>
 
             <build>
@@ -115,7 +115,7 @@ limitations under the License.
                                             <directory>${io.tmp.dir}</directory>
                                             <filtering>false</filtering>
                                             <excludes>
-                                                <exclude>**/*-normalized.json</exclude>
+                                                <exclude>**/*-normalized*.json</exclude>
                                                 <exclude>**/sample.kryo</exclude>
                                             </excludes>
                                         </resource>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV2d0.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV2d0.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV2d0.java
new file mode 100644
index 0000000..97c1cba
--- /dev/null
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV2d0.java
@@ -0,0 +1,213 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.tinkergraph.structure;
+
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.io.AbstractIoRegistry;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONIo;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONUtil;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.TinkerPopJacksonModule;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoWriter;
+import org.apache.tinkerpop.gremlin.structure.util.Attachable;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
+import org.apache.tinkerpop.shaded.jackson.core.JsonParser;
+import org.apache.tinkerpop.shaded.jackson.core.JsonProcessingException;
+import org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext;
+import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
+import org.apache.tinkerpop.shaded.jackson.databind.deser.std.StdDeserializer;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdScalarSerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
+import org.apache.tinkerpop.shaded.kryo.Kryo;
+import org.apache.tinkerpop.shaded.kryo.Serializer;
+import org.apache.tinkerpop.shaded.kryo.io.Input;
+import org.apache.tinkerpop.shaded.kryo.io.Output;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * An implementation of the {@link org.apache.tinkerpop.gremlin.structure.io.IoRegistry} interface that provides serializers with custom configurations for
+ * implementation specific classes that might need to be serialized.  This registry allows a {@link org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph} to
+ * be serialized directly which is useful for moving small graphs around on the network.
+ * <p/>
+ * Most providers need not implement this kind of custom serializer as they will deal with much larger graphs that
+ * wouldn't be practical to serialize in this fashion.  This is a bit of a special case for TinkerGraph given its
+ * in-memory status.  Typical implementations would create serializers for a complex vertex identifier or a
+ * custom data class like a "geographic point".
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public final class TinkerIoRegistryV2d0 extends AbstractIoRegistry {
+
+    private static final TinkerIoRegistryV2d0 INSTANCE = new TinkerIoRegistryV2d0();
+
+    private TinkerIoRegistryV2d0() {
+        register(GryoIo.class, TinkerGraph.class, new TinkerGraphGryoSerializer());
+        register(GraphSONIo.class, null, new TinkerModuleV2d0());
+    }
+
+    public static TinkerIoRegistryV2d0 getInstance() {
+        return INSTANCE;
+    }
+
+    /**
+     * Provides a method to serialize an entire {@link org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph} into itself for Gryo.  This is useful when
+     * shipping small graphs around through Gremlin Server. Reuses the existing Kryo instance for serialization.
+     */
+    final static class TinkerGraphGryoSerializer extends Serializer<TinkerGraph> {
+        @Override
+        public void write(final Kryo kryo, final Output output, final TinkerGraph graph) {
+            try (final ByteArrayOutputStream stream = new ByteArrayOutputStream()) {
+                GryoWriter.build().mapper(() -> kryo).create().writeGraph(stream, graph);
+                final byte[] bytes = stream.toByteArray();
+                output.writeInt(bytes.length);
+                output.write(bytes);
+            } catch (Exception io) {
+                throw new RuntimeException(io);
+            }
+        }
+
+        @Override
+        public TinkerGraph read(final Kryo kryo, final Input input, final Class<TinkerGraph> tinkerGraphClass) {
+            final TinkerGraph graph = TinkerGraph.open();
+            final int len = input.readInt();
+            final byte[] bytes = input.readBytes(len);
+            try (final ByteArrayInputStream stream = new ByteArrayInputStream(bytes)) {
+                GryoReader.build().mapper(() -> kryo).create().readGraph(stream, graph);
+            } catch (Exception io) {
+                throw new RuntimeException(io);
+            }
+
+            return graph;
+        }
+    }
+
+    /**
+     * Provides a method to serialize an entire {@link org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph} into itself for GraphSON. This is useful when
+     * shipping small graphs around through Gremlin Server.
+     */
+    final static class TinkerModuleV2d0 extends TinkerPopJacksonModule {
+        public TinkerModuleV2d0() {
+            super("tinkergraph-2.0");
+            addSerializer(TinkerGraph.class, new TinkerGraphJacksonSerializer());
+            addDeserializer(TinkerGraph.class, new TinkerGraphJacksonDeserializer());
+        }
+
+        @Override
+        public Map<Class, String> getTypeDefinitions() {
+            return new HashMap<Class, String>(){{
+                put(TinkerGraph.class, "graph");
+            }};
+        }
+
+        @Override
+        public String getTypeNamespace() {
+            return "gremlin";
+        }
+    }
+
+    /**
+     * Serializes the graph into an edge list format.  Edge list is a better choices than adjacency list (which is
+     * typically standard from the {@link org.apache.tinkerpop.gremlin.structure.io.GraphReader} and {@link org.apache.tinkerpop.gremlin.structure.io.GraphWriter} perspective) in this case because
+     * the use case for this isn't around massive graphs.  The use case is for "small" subgraphs that are being
+     * shipped over the wire from Gremlin Server. Edge list format is a bit easier for non-JVM languages to work
+     * with as a format and doesn't require a cache for loading (as vertex labels are not serialized in adjacency
+     * list).
+     */
+    final static class TinkerGraphJacksonSerializer extends StdScalarSerializer<TinkerGraph> {
+
+        public TinkerGraphJacksonSerializer() {
+            super(TinkerGraph.class);
+        }
+
+        @Override
+        public void serialize(final TinkerGraph graph, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
+                throws IOException {
+            jsonGenerator.writeStartObject();
+            jsonGenerator.writeFieldName(GraphSONTokens.VERTICES);
+            jsonGenerator.writeStartArray();
+
+            final Iterator<Vertex> vertices = graph.vertices();
+            while (vertices.hasNext()) {
+                serializerProvider.defaultSerializeValue(vertices.next(), jsonGenerator);
+            }
+
+            jsonGenerator.writeEndArray();
+            jsonGenerator.writeFieldName(GraphSONTokens.EDGES);
+            jsonGenerator.writeStartArray();
+
+            final Iterator<Edge> edges = graph.edges();
+            while (edges.hasNext()) {
+                serializerProvider.defaultSerializeValue(edges.next(), jsonGenerator);
+            }
+
+            jsonGenerator.writeEndArray();
+            jsonGenerator.writeEndObject();
+        }
+    }
+
+    /**
+     * Deserializes the edge list format.
+     */
+    static class TinkerGraphJacksonDeserializer extends StdDeserializer<TinkerGraph> {
+        public TinkerGraphJacksonDeserializer() {
+            super(TinkerGraph.class);
+        }
+
+        @Override
+        public TinkerGraph deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            final TinkerGraph graph = TinkerGraph.open();
+
+            final List<? extends Edge> edges;
+            final List<? extends Vertex> vertices;
+
+            jsonParser.nextToken();
+            final Map<String, Object> graphData = deserializationContext.readValue(jsonParser, Map.class);
+            vertices = (List<DetachedVertex>) graphData.get(GraphSONTokens.VERTICES);
+            edges = (List<DetachedEdge>) graphData.get(GraphSONTokens.EDGES);
+
+
+            vertices.forEach(e -> {
+                if (e instanceof DetachedVertex) {
+                    ((DetachedVertex)e).attach(Attachable.Method.getOrCreate(graph));
+                }
+            });
+
+            edges.forEach(e -> {
+                if (e instanceof DetachedEdge) {
+                    ((DetachedEdge) e).attach(Attachable.Method.getOrCreate(graph));
+                }
+            });
+
+            return graph;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/IoDataGenerationTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/IoDataGenerationTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/IoDataGenerationTest.java
index 86fc733..d07105b 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/IoDataGenerationTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/IoDataGenerationTest.java
@@ -30,7 +30,9 @@ import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.io.GraphReader;
 import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLWriter;
 import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONVersion;
 import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONWriter;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.TypeInfo;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoWriter;
 import org.junit.BeforeClass;
@@ -49,7 +51,7 @@ import java.util.stream.IntStream;
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 public class IoDataGenerationTest {
-    private static String tempPath;
+    private static final String tempPath;
 
     static {
         tempPath = TestHelper.makeTestDataPath(TinkerGraphTest.class, "tinkerpop-io").getPath() + File.separator;
@@ -195,6 +197,94 @@ public class IoDataGenerationTest {
         os.close();
     }
 
+    /**
+     * No assertions.  Just write out the graph for convenience.
+     */
+    @Test
+    public void shouldWriteClassicGraphAsGraphSONV2d0NoTypes() throws IOException {
+        final OutputStream os = new FileOutputStream(tempPath + "tinkerpop-classic-v2d0.json");
+        GraphSONWriter.build().mapper(GraphSONMapper.build().version(GraphSONVersion.V2_0).typeInfo(TypeInfo.NO_TYPES).create()).create()
+                .writeGraph(os, TinkerFactory.createClassic());
+        os.close();
+    }
+
+    /**
+     * No assertions.  Just write out the graph for convenience.
+     */
+    @Test
+    public void shouldWriteModernGraphAsGraphSOV2d0NNoTypes() throws IOException {
+        final OutputStream os = new FileOutputStream(tempPath + "tinkerpop-modern-v2d0.json");
+        GraphSONWriter.build().mapper(GraphSONMapper.build().version(GraphSONVersion.V2_0).typeInfo(TypeInfo.NO_TYPES).create()).create()
+                .writeGraph(os, TinkerFactory.createModern());
+        os.close();
+    }
+
+    /**
+     * No assertions.  Just write out the graph for convenience.
+     */
+    @Test
+    public void shouldWriteCrewGraphAsGraphSONV2d0NoTypes() throws IOException {
+        final OutputStream os = new FileOutputStream(tempPath + "tinkerpop-crew-v2d0.json");
+        GraphSONWriter.build().mapper(GraphSONMapper.build().version(GraphSONVersion.V2_0).typeInfo(TypeInfo.NO_TYPES).create()).create()
+                .writeGraph(os, TinkerFactory.createTheCrew());
+        os.close();
+    }
+
+    /**
+     * No assertions.  Just write out the graph for convenience.
+     */
+    @Test
+    public void shouldWriteClassicGraphNormalizedAsGraphSONV2d0() throws IOException {
+        final OutputStream os = new FileOutputStream(tempPath + "tinkerpop-classic-normalized-v2d0.json");
+        GraphSONWriter.build().mapper(GraphSONMapper.build().version(GraphSONVersion.V2_0).typeInfo(TypeInfo.NO_TYPES).normalize(true).create()).create()
+                .writeGraph(os, TinkerFactory.createClassic());
+        os.close();
+    }
+
+    /**
+     * No assertions.  Just write out the graph for convenience.
+     */
+    @Test
+    public void shouldWriteModernGraphNormalizedAsGraphSONV2d0() throws IOException {
+        final OutputStream os = new FileOutputStream(tempPath + "tinkerpop-modern-normalized-v2d0.json");
+        GraphSONWriter.build().mapper(GraphSONMapper.build().version(GraphSONVersion.V2_0).typeInfo(TypeInfo.NO_TYPES).normalize(true).create()).create()
+                .writeGraph(os, TinkerFactory.createModern());
+        os.close();
+    }
+
+    /**
+     * No assertions.  Just write out the graph for convenience.
+     */
+    @Test
+    public void shouldWriteClassicGraphAsGraphSONV2d0WithTypes() throws IOException {
+        final OutputStream os = new FileOutputStream(tempPath + "tinkerpop-classic-v2d0-typed.json");
+        GraphSONWriter.build().mapper(GraphSONMapper.build().version(GraphSONVersion.V2_0).create()).create()
+                .writeGraph(os, TinkerFactory.createClassic());
+        os.close();
+    }
+
+    /**
+     * No assertions.  Just write out the graph for convenience.
+     */
+    @Test
+    public void shouldWriteModernGraphAsGraphSONV2d0WithTypes() throws IOException {
+        final OutputStream os = new FileOutputStream(tempPath + "tinkerpop-modern-v2d0-typed.json");
+        GraphSONWriter.build().mapper(GraphSONMapper.build().version(GraphSONVersion.V2_0).create()).create()
+                .writeGraph(os, TinkerFactory.createModern());
+        os.close();
+    }
+
+    /**
+     * No assertions.  Just write out the graph for convenience.
+     */
+    @Test
+    public void shouldWriteCrewGraphAsGraphSONV2d0WithTypes() throws IOException {
+        final OutputStream os = new FileOutputStream(tempPath + "tinkerpop-crew-v2d0-typed.json");
+        GraphSONWriter.build().mapper(GraphSONMapper.build().version(GraphSONVersion.V2_0).create()).create()
+                .writeGraph(os, TinkerFactory.createTheCrew());
+        os.close();
+    }
+
     @Test
     public void shouldWriteSampleForGremlinServer() throws IOException {
         final Graph g = TinkerGraph.open();
@@ -267,12 +357,27 @@ public class IoDataGenerationTest {
         GraphSONWriter.build().mapper(GraphSONMapper.build().create()).create().writeGraph(os2, g);
         os2.close();
 
-        final OutputStream os3 = new FileOutputStream(tempPath + "grateful-dead.xml");
-        GraphMLWriter.build().create().writeGraph(os3, g);
+        final OutputStream os3 = new FileOutputStream(tempPath + "grateful-dead-v2d0.json");
+        GraphSONWriter.build().mapper(GraphSONMapper.build().version(GraphSONVersion.V2_0)
+                .typeInfo(TypeInfo.NO_TYPES).create())
+                .create()
+                .writeGraph(os3, g);
         os3.close();
 
-        final OutputStream os4 = new FileOutputStream(tempPath + "grateful-dead-typed.json");
-        GraphSONWriter.build().mapper(GraphSONMapper.build().embedTypes(true).create()).create().writeGraph(os4, g);
+        final OutputStream os4 = new FileOutputStream(tempPath + "grateful-dead.xml");
+        GraphMLWriter.build().create().writeGraph(os4, g);
         os4.close();
+
+        final OutputStream os5 = new FileOutputStream(tempPath + "grateful-dead-typed.json");
+        GraphSONWriter.build().mapper(GraphSONMapper.build().embedTypes(true).create()).create().writeGraph(os5, g);
+        os5.close();
+
+        final OutputStream os6 = new FileOutputStream(tempPath + "grateful-dead-v2d0-typed.json");
+        GraphSONWriter.build().mapper(GraphSONMapper.build().version(GraphSONVersion.V2_0)
+                .typeInfo(TypeInfo.PARTIAL_TYPES).create())
+                .create()
+                .writeGraph(os6, g);
+        os6.close();
+
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphGraphSONSerializerV2d0Test.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphGraphSONSerializerV2d0Test.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphGraphSONSerializerV2d0Test.java
new file mode 100644
index 0000000..907aaed
--- /dev/null
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphGraphSONSerializerV2d0Test.java
@@ -0,0 +1,557 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.tinkergraph.structure;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
+import org.apache.tinkerpop.gremlin.process.traversal.util.Metrics;
+import org.apache.tinkerpop.gremlin.process.traversal.util.MutableMetrics;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.T;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.io.GraphReader;
+import org.apache.tinkerpop.gremlin.structure.io.GraphWriter;
+import org.apache.tinkerpop.gremlin.structure.io.IoTest;
+import org.apache.tinkerpop.gremlin.structure.io.Mapper;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONVersion;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONWriter;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.TypeInfo;
+import org.junit.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.time.Duration;
+import java.time.LocalDateTime;
+import java.time.Year;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.UUID;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+
+public class TinkerGraphGraphSONSerializerV2d0Test {
+
+    // As of TinkerPop 3.2.1 default for GraphSON 2.0 means types enabled.
+    Mapper defaultMapperV2d0 = GraphSONMapper.build()
+            .version(GraphSONVersion.V2_0)
+            .addRegistry(TinkerIoRegistryV2d0.getInstance())
+            .create();
+
+    Mapper noTypesMapperV2d0 = GraphSONMapper.build()
+            .version(GraphSONVersion.V2_0)
+            .typeInfo(TypeInfo.NO_TYPES)
+            .addRegistry(TinkerIoRegistryV2d0.getInstance())
+            .create();
+
+    /**
+     * Checks that the graph has been fully ser/deser with types.
+     */
+    @Test
+    public void shouldDeserializeGraphSONIntoTinkerGraphWithPartialTypes() throws IOException {
+        GraphWriter writer = getWriter(defaultMapperV2d0);
+        GraphReader reader = getReader(defaultMapperV2d0);
+        TinkerGraph baseModern = TinkerFactory.createModern();
+
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            writer.writeGraph(out, baseModern);
+            String json = out.toString();
+            TinkerGraph read = TinkerGraph.open();
+            reader.readGraph(new ByteArrayInputStream(json.getBytes()), read);
+            IoTest.assertModernGraph(read, true, false);
+        }
+    }
+
+    /**
+     * Checks that the graph has been fully ser/deser without types.
+     */
+    @Test
+    public void shouldDeserializeGraphSONIntoTinkerGraphWithoutTypes() throws IOException {
+        GraphWriter writer = getWriter(noTypesMapperV2d0);
+        GraphReader reader = getReader(noTypesMapperV2d0);
+        TinkerGraph baseModern = TinkerFactory.createModern();
+
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            writer.writeGraph(out, baseModern);
+            String json = out.toString();
+            TinkerGraph read = TinkerGraph.open();
+            reader.readGraph(new ByteArrayInputStream(json.getBytes()), read);
+            IoTest.assertModernGraph(read, true, false);
+        }
+    }
+
+    /**
+     * Thorough types verification for Vertex ids, Vertex props, Edge ids, Edge props
+     */
+    @Test
+    public void shouldDeserializeGraphSONIntoTinkerGraphKeepingTypes() throws IOException {
+        GraphWriter writer = getWriter(defaultMapperV2d0);
+        GraphReader reader = getReader(defaultMapperV2d0);
+
+        Graph sampleGraph1 = TinkerFactory.createModern();
+        Vertex v1 = sampleGraph1.addVertex(T.id, 100, "name", "kevin", "theUUID", UUID.randomUUID());
+        Vertex v2 = sampleGraph1.addVertex(T.id, 101L, "name", "henri", "theUUID", UUID.randomUUID());
+        v1.addEdge("hello", v2, T.id, 101L,
+                "uuid", UUID.randomUUID());
+
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            writer.writeObject(out, sampleGraph1);
+            String json = out.toString();
+
+            TinkerGraph read = reader.readObject(new ByteArrayInputStream(json.getBytes()), TinkerGraph.class);
+            assertTrue(approximateGraphsCheck(sampleGraph1, read));
+        }
+    }
+
+    /**
+     * Asserts the approximateGraphsChecks function fails when expected. Vertex ids.
+     */
+    @Test
+    public void shouldLooseTypesWithGraphSONNoTypesForVertexIds() throws IOException {
+        GraphWriter writer = getWriter(noTypesMapperV2d0);
+        GraphReader reader = getReader(noTypesMapperV2d0);
+        Graph sampleGraph1 = TinkerFactory.createModern();
+        sampleGraph1.addVertex(T.id, 100L, "name", "kevin");
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            writer.writeGraph(out, sampleGraph1);
+            String json = out.toString();
+            TinkerGraph read = TinkerGraph.open();
+            reader.readGraph(new ByteArrayInputStream(json.getBytes()), read);
+            // Should fail on deserialized vertex Id.
+            assertFalse(approximateGraphsCheck(sampleGraph1, read));
+        }
+    }
+
+    /**
+     * Asserts the approximateGraphsChecks function fails when expected. Vertex props.
+     */
+    @Test
+    public void shouldLooseTypesWithGraphSONNoTypesForVertexProps() throws IOException {
+        GraphWriter writer = getWriter(noTypesMapperV2d0);
+        GraphReader reader = getReader(noTypesMapperV2d0);
+        Graph sampleGraph1 = TinkerFactory.createModern();
+
+        sampleGraph1.addVertex(T.id, 100, "name", "kevin", "uuid", UUID.randomUUID());
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            writer.writeGraph(out, sampleGraph1);
+            String json = out.toString();
+            TinkerGraph read = TinkerGraph.open();
+            reader.readGraph(new ByteArrayInputStream(json.getBytes()), read);
+            // Should fail on deserialized vertex prop.
+            assertFalse(approximateGraphsCheck(sampleGraph1, read));
+        }
+    }
+
+    /**
+     * Asserts the approximateGraphsChecks function fails when expected. Edge ids.
+     */
+    @Test
+    public void shouldLooseTypesWithGraphSONNoTypesForEdgeIds() throws IOException {
+        GraphWriter writer = getWriter(noTypesMapperV2d0);
+        GraphReader reader = getReader(noTypesMapperV2d0);
+        Graph sampleGraph1 = TinkerFactory.createModern();
+        Vertex v1 = sampleGraph1.addVertex(T.id, 100, "name", "kevin");
+        v1.addEdge("hello", sampleGraph1.traversal().V().has("name", "marko").next(), T.id, 101L);
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            writer.writeGraph(out, sampleGraph1);
+            String json = out.toString();
+            TinkerGraph read = TinkerGraph.open();
+            reader.readGraph(new ByteArrayInputStream(json.getBytes()), read);
+            // Should fail on deserialized edge Id.
+            assertFalse(approximateGraphsCheck(sampleGraph1, read));
+        }
+    }
+
+    /**
+     * Asserts the approximateGraphsChecks function fails when expected. Edge props.
+     */
+    @Test
+    public void shouldLooseTypesWithGraphSONNoTypesForEdgeProps() throws IOException {
+        GraphWriter writer = getWriter(noTypesMapperV2d0);
+        GraphReader reader = getReader(noTypesMapperV2d0);
+        Graph sampleGraph1 = TinkerFactory.createModern();
+
+        Vertex v1 = sampleGraph1.addVertex(T.id, 100, "name", "kevin");
+        v1.addEdge("hello", sampleGraph1.traversal().V().has("name", "marko").next(), T.id, 101,
+                "uuid", UUID.randomUUID());
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            writer.writeGraph(out, sampleGraph1);
+            String json = out.toString();
+            TinkerGraph read = TinkerGraph.open();
+            reader.readGraph(new ByteArrayInputStream(json.getBytes()), read);
+            // Should fail on deserialized edge prop.
+            assertFalse(approximateGraphsCheck(sampleGraph1, read));
+        }
+    }
+
+    /**
+     * Those kinds of types are declared differently in the GraphSON type deserializer, check that all are handled
+     * properly.
+     */
+    @Test
+    public void shouldKeepTypesWhenDeserializingSerializedTinkerGraph() throws IOException {
+        TinkerGraph tg = TinkerGraph.open();
+
+        Vertex v = tg.addVertex("vertexTest");
+        UUID uuidProp = UUID.randomUUID();
+        Duration durationProp = Duration.ofHours(3);
+        Long longProp = 2L;
+        ByteBuffer byteBufferProp = ByteBuffer.wrap("testbb".getBytes());
+
+        // One Java util type natively supported by Jackson
+        v.property("uuid", uuidProp);
+        // One custom time type added by the GraphSON module
+        v.property("duration", durationProp);
+        // One Java native type not handled by JSON natively
+        v.property("long", longProp);
+        // One Java util type added by GraphSON
+        v.property("bytebuffer", byteBufferProp);
+
+        GraphWriter writer = getWriter(defaultMapperV2d0);
+        GraphReader reader = getReader(defaultMapperV2d0);
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            writer.writeGraph(out, tg);
+            String json = out.toString();
+            TinkerGraph read = TinkerGraph.open();
+            reader.readGraph(new ByteArrayInputStream(json.getBytes()), read);
+            Vertex vRead = read.traversal().V().hasLabel("vertexTest").next();
+            assertEquals(vRead.property("uuid").value(), uuidProp);
+            assertEquals(vRead.property("duration").value(), durationProp);
+            assertEquals(vRead.property("long").value(), longProp);
+            assertEquals(vRead.property("bytebuffer").value(), byteBufferProp);
+        }
+    }
+
+
+    @Test
+    public void deserializersTestsVertex() {
+        TinkerGraph tg = TinkerGraph.open();
+
+        Vertex v = tg.addVertex("vertexTest");
+        v.property("born", LocalDateTime.of(1971, 1, 2, 20, 50));
+        v.property("dead", LocalDateTime.of(1971, 1, 7, 20, 50));
+
+        GraphWriter writer = getWriter(defaultMapperV2d0);
+        GraphReader reader = getReader(defaultMapperV2d0);
+
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            writer.writeObject(out, v);
+            String json = out.toString();
+
+            // Object works, because there's a type in the payload now
+            // Vertex.class would work as well
+            // Anything else would not because we check the type in param here with what's in the JSON, for safety.
+            Vertex vRead = (Vertex)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+            assertEquals(v, vRead);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void deserializersTestsEdge() {
+        TinkerGraph tg = TinkerGraph.open();
+
+        Vertex v = tg.addVertex("vertexTest");
+        Vertex v2 = tg.addVertex("vertexTest");
+
+        Edge ed = v.addEdge("knows", v2, "time", LocalDateTime.now());
+
+        GraphWriter writer = getWriter(defaultMapperV2d0);
+        GraphReader reader = getReader(defaultMapperV2d0);
+
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            writer.writeObject(out, ed);
+            String json = out.toString();
+
+            // Object works, because there's a type in the payload now
+            // Edge.class would work as well
+            // Anything else would not because we check the type in param here with what's in the JSON, for safety.
+            Edge eRead = (Edge)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+            assertEquals(ed, eRead);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void deserializersTestsTinkerGraph() {
+        TinkerGraph tg = TinkerGraph.open();
+
+        Vertex v = tg.addVertex("vertexTest");
+        Vertex v2 = tg.addVertex("vertexTest");
+
+        Edge ed = v.addEdge("knows", v2);
+
+        GraphWriter writer = getWriter(defaultMapperV2d0);
+        GraphReader reader = getReader(defaultMapperV2d0);
+
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            writer.writeObject(out, tg);
+            String json = out.toString();
+
+            Graph gRead = (Graph)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+            assertTrue(approximateGraphsCheck(tg, gRead));
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void deserializersTestsProperty() {
+        TinkerGraph tg = TinkerGraph.open();
+
+        Vertex v = tg.addVertex("vertexTest");
+        Vertex v2 = tg.addVertex("vertexTest");
+
+        Edge ed = v.addEdge("knows", v2);
+
+        GraphWriter writer = getWriter(defaultMapperV2d0);
+        GraphReader reader = getReader(defaultMapperV2d0);
+
+        Property prop = ed.property("since", Year.parse("1993"));
+
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            writer.writeObject(out, prop);
+            String json = out.toString();
+
+            Property pRead = (Property)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+            //can't use equals here, because pRead is detached, its parent element has not been intentionally
+            //serialized and "equals()" checks that.
+            assertTrue(prop.key().equals(pRead.key()) && prop.value().equals(pRead.value()));
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void deserializersTestsVertexProperty() {
+        TinkerGraph tg = TinkerGraph.open();
+
+        Vertex v = tg.addVertex("vertexTest");
+
+        GraphWriter writer = getWriter(defaultMapperV2d0);
+        GraphReader reader = getReader(defaultMapperV2d0);
+
+        VertexProperty prop = v.property("born", LocalDateTime.of(1971, 1, 2, 20, 50));
+
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            writer.writeObject(out, prop);
+            String json = out.toString();
+
+            VertexProperty vPropRead = (VertexProperty)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+            //only classes and ids are checked, that's ok, full vertex property ser/de
+            //is checked elsewhere.
+            assertEquals(prop, vPropRead);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void deserializersTestsPath() {
+        TinkerGraph tg = TinkerFactory.createModern();
+
+        GraphWriter writer = getWriter(defaultMapperV2d0);
+        GraphReader reader = getReader(defaultMapperV2d0);
+
+        Path p = tg.traversal().V(1).as("a").has("name").as("b").
+                out("knows").out("created").as("c").
+                has("name", "ripple").values("name").as("d").
+                identity().as("e").path().next();
+
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            writer.writeObject(out, p);
+            String json = out.toString();
+
+            Path pathRead = (Path)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+
+            for (int i = 0; i < p.objects().size(); i++) {
+                Object o = p.objects().get(i);
+                Object oRead = pathRead.objects().get(i);
+                assertEquals(o, oRead);
+            }
+            for (int i = 0; i < p.labels().size(); i++) {
+                Set<String> o = p.labels().get(i);
+                Set<String> oRead = pathRead.labels().get(i);
+                assertEquals(o, oRead);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void deserializersTestsMetrics() {
+        TinkerGraph tg = TinkerFactory.createModern();
+
+        GraphWriter writer = getWriter(defaultMapperV2d0);
+        GraphReader reader = getReader(defaultMapperV2d0);
+
+        TraversalMetrics tm = tg.traversal().V(1).as("a").has("name").as("b").
+                out("knows").out("created").as("c").
+                has("name", "ripple").values("name").as("d").
+                identity().as("e").profile().next();
+
+        MutableMetrics m = new MutableMetrics(tm.getMetrics(0));
+        // making sure nested metrics are included in serde
+        m.addNested(new MutableMetrics(tm.getMetrics(1)));
+
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            writer.writeObject(out, m);
+            String json = out.toString();
+
+            Metrics metricsRead = (Metrics)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+            // toString should be enough to compare Metrics
+            assertTrue(m.toString().equals(metricsRead.toString()));
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void deserializersTestsTraversalMetrics() {
+        TinkerGraph tg = TinkerFactory.createModern();
+
+        GraphWriter writer = getWriter(defaultMapperV2d0);
+        GraphReader reader = getReader(defaultMapperV2d0);
+
+        TraversalMetrics tm = tg.traversal().V(1).as("a").has("name").as("b").
+                out("knows").out("created").as("c").
+                has("name", "ripple").values("name").as("d").
+                identity().as("e").profile().next();
+
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            writer.writeObject(out, tm);
+            String json = out.toString();
+
+            TraversalMetrics traversalMetricsRead = (TraversalMetrics)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+            // toString should be enough to compare TraversalMetrics
+            assertTrue(tm.toString().equals(traversalMetricsRead.toString()));
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void deserializersTree() {
+        TinkerGraph tg = TinkerFactory.createModern();
+
+        GraphWriter writer = getWriter(noTypesMapperV2d0);
+        GraphReader reader = getReader(noTypesMapperV2d0);
+
+        Tree t = tg.traversal().V().out().out().tree().next();
+
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            Vertex v = tg.traversal().V(1).next();
+                     v.property("myUUIDprop", UUID.randomUUID());
+            writer.writeObject(out, v);
+
+
+//            writer.writeObject(out, t);
+            String json = out.toString();
+
+            System.out.println("json = " + json);
+
+//            Tree treeRead = (Tree)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+            //Map's equals should check each component of the tree recursively
+            //on each it will call "equals()" which for Vertices will compare ids, which
+            //is ok. Complete vertex deser is checked elsewhere.
+//            assertEquals(t, treeRead);
+
+
+
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    private GraphWriter getWriter(Mapper paramMapper) {
+        return GraphSONWriter.build().mapper(paramMapper).create();
+    }
+
+    private GraphReader getReader(Mapper paramMapper) {
+        return GraphSONReader.build().mapper(paramMapper).create();
+    }
+
+    /**
+     * Checks sequentially vertices and egdes of both graphs. Will check sequentially Vertex IDs, Vertex Properties IDs
+     * and values and classes. Then same for edges. To use when serializing a Graph and deserializing the supposedly
+     * same Graph.
+     */
+    private boolean approximateGraphsCheck(Graph g1, Graph g2) {
+        Iterator<Vertex> itV = g1.vertices();
+        Iterator<Vertex> itVRead = g2.vertices();
+
+        while (itV.hasNext()) {
+            Vertex v = itV.next();
+            Vertex vRead = itVRead.next();
+
+            // Will only check IDs but that's 'good' enough.
+            if (!v.equals(vRead)) {
+                return false;
+            }
+
+            Iterator itVP = v.properties();
+            Iterator itVPRead = vRead.properties();
+            while (itVP.hasNext()) {
+                VertexProperty vp = (VertexProperty) itVP.next();
+                VertexProperty vpRead = (VertexProperty) itVPRead.next();
+                if (!vp.value().equals(vpRead.value())
+                        || !vp.equals(vpRead)) {
+                    return false;
+                }
+            }
+        }
+
+        Iterator<Edge> itE = g1.edges();
+        Iterator<Edge> itERead = g2.edges();
+
+        while (itE.hasNext()) {
+            Edge e = itE.next();
+            Edge eRead = itERead.next();
+            // Will only check IDs but that's good enough.
+            if (!e.equals(eRead)) {
+                return false;
+            }
+
+            Iterator itEP = e.properties();
+            Iterator itEPRead = eRead.properties();
+            while (itEP.hasNext()) {
+                Property ep = (Property) itEP.next();
+                Property epRead = (Property) itEPRead.next();
+                if (!ep.value().equals(epRead.value())
+                        || !ep.equals(epRead)) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+}


[07/19] tinkerpop git commit: TINKERPOP-1274: GraphSON 2.0.

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinV2d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinV2d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinV2d0.java
new file mode 100644
index 0000000..a2d29fc
--- /dev/null
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinV2d0.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.driver.ser;
+
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONVersion;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.TypeInfo;
+
+import java.nio.ByteBuffer;
+
+/**
+ * Serialize results to JSON with version 2.0.x schema.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public final class GraphSONMessageSerializerGremlinV2d0 extends AbstractGraphSONMessageSerializerV2d0 {
+
+    private static final String MIME_TYPE = SerTokens.MIME_GRAPHSON_V2D0;
+
+    private static byte[] header;
+
+    static {
+        final ByteBuffer buffer = ByteBuffer.allocate(MIME_TYPE.length() + 1);
+        buffer.put((byte) MIME_TYPE.length());
+        buffer.put(MIME_TYPE.getBytes());
+        header = buffer.array();
+    }
+
+    public GraphSONMessageSerializerGremlinV2d0() {
+        super();
+    }
+
+    public GraphSONMessageSerializerGremlinV2d0(final GraphSONMapper mapper) {
+        super(mapper);
+    }
+
+    @Override
+    public String[] mimeTypesSupported() {
+        return new String[]{MIME_TYPE};
+    }
+
+    @Override
+    byte[] obtainHeader() {
+        return header;
+    }
+
+    @Override
+    GraphSONMapper.Builder configureBuilder(final GraphSONMapper.Builder builder) {
+        return builder.version(GraphSONVersion.V2_0)
+                .addCustomModule(new GremlinServerModule())
+                .typeInfo(TypeInfo.PARTIAL_TYPES);
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0.java
new file mode 100644
index 0000000..2e8c96e
--- /dev/null
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0.java
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.driver.ser;
+
+import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONVersion;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.TypeInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.nio.ByteBuffer;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * Serialize results to JSON with version 2.0.x schema.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public final class GraphSONMessageSerializerV2d0 extends AbstractGraphSONMessageSerializerV2d0 implements MessageTextSerializer {
+    private static final Logger logger = LoggerFactory.getLogger(GraphSONMessageSerializerV2d0.class);
+    private static final String MIME_TYPE = SerTokens.MIME_JSON;
+
+    private static byte[] header;
+
+    static {
+        final ByteBuffer buffer = ByteBuffer.allocate(MIME_TYPE.length() + 1);
+        buffer.put((byte) MIME_TYPE.length());
+        buffer.put(MIME_TYPE.getBytes());
+        header = buffer.array();
+    }
+
+    public GraphSONMessageSerializerV2d0() {
+        super();
+    }
+
+    public GraphSONMessageSerializerV2d0(final GraphSONMapper mapper) {
+        super(mapper);
+    }
+
+    @Override
+    public String[] mimeTypesSupported() {
+        return new String[]{MIME_TYPE};
+    }
+
+    @Override
+    GraphSONMapper.Builder configureBuilder(final GraphSONMapper.Builder builder) {
+        return builder.version(GraphSONVersion.V2_0)
+                .addCustomModule(new GremlinServerModule())
+                .typeInfo(TypeInfo.PARTIAL_TYPES);
+    }
+
+    @Override
+    byte[] obtainHeader() {
+        return header;
+    }
+
+    @Override
+    public ResponseMessage deserializeResponse(final String msg) throws SerializationException {
+        try {
+            final Map<String, Object> responseData = mapper.readValue(msg, mapTypeReference);
+            final Map<String, Object> status = (Map<String, Object>) responseData.get(SerTokens.TOKEN_STATUS);
+            final Map<String, Object> result = (Map<String, Object>) responseData.get(SerTokens.TOKEN_RESULT);
+            return ResponseMessage.build(UUID.fromString(responseData.get(SerTokens.TOKEN_REQUEST).toString()))
+                    .code(ResponseStatusCode.getFromValue((Integer) status.get(SerTokens.TOKEN_CODE)))
+                    .statusMessage(status.get(SerTokens.TOKEN_MESSAGE).toString())
+                    .statusAttributes((Map<String, Object>) status.get(SerTokens.TOKEN_ATTRIBUTES))
+                    .result(result.get(SerTokens.TOKEN_DATA))
+                    .responseMetaData((Map<String, Object>) result.get(SerTokens.TOKEN_META))
+                    .create();
+        } catch (Exception ex) {
+            logger.warn("Response [{}] could not be deserialized by {}.", msg, AbstractGraphSONMessageSerializerV2d0.class.getName());
+            throw new SerializationException(ex);
+        }
+    }
+
+    @Override
+    public String serializeResponseAsString(final ResponseMessage responseMessage) throws SerializationException {
+        try {
+            return mapper.writeValueAsString(responseMessage);
+        } catch (Exception ex) {
+            logger.warn("Response [{}] could not be serialized by {}.", responseMessage.toString(), AbstractGraphSONMessageSerializerV2d0.class.getName());
+            throw new SerializationException(ex);
+        }
+    }
+
+    @Override
+    public RequestMessage deserializeRequest(final String msg) throws SerializationException {
+        try {
+            return mapper.readValue(msg, RequestMessage.class);
+        } catch (Exception ex) {
+            logger.warn("Request [{}] could not be deserialized by {}.", msg, AbstractGraphSONMessageSerializerV2d0.class.getName());
+            throw new SerializationException(ex);
+        }
+    }
+
+    @Override
+    public String serializeRequestAsString(final RequestMessage requestMessage) throws SerializationException {
+        try {
+            return mapper.writeValueAsString(requestMessage);
+        } catch (Exception ex) {
+            logger.warn("Request [{}] could not be serialized by {}.", requestMessage.toString(), AbstractGraphSONMessageSerializerV2d0.class.getName());
+            throw new SerializationException(ex);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java
index c857116..ecda014 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java
@@ -38,6 +38,7 @@ public final  class SerTokens {
 
     public static final String MIME_JSON = "application/json";
     public static final String MIME_GRAPHSON_V1D0 = "application/vnd.gremlin-v1.0+json";
+    public static final String MIME_GRAPHSON_V2D0 = "application/vnd.gremlin-v2.0+json";
     public static final String MIME_GRYO_V1D0 = "application/vnd.gremlin-v1.0+gryo";
     public static final String MIME_GRYO_LITE_V1D0 = "application/vnd.gremlin-v1.0+gryo-lite";
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV1d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV1d0.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV1d0.java
new file mode 100644
index 0000000..95907f9
--- /dev/null
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV1d0.java
@@ -0,0 +1,334 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.driver.ser;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufAllocator;
+import io.netty.buffer.UnpooledByteBufAllocator;
+import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+import org.apache.tinkerpop.shaded.jackson.databind.util.StdDateFormat;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+
+/**
+ * Serializer tests that cover lossy serialization/deserialization methods.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class GraphSONMessageSerializerGremlinTestV1d0 {
+
+    private UUID requestId = UUID.fromString("6457272A-4018-4538-B9AE-08DD5DDC0AA1");
+    private ResponseMessage.Builder responseMessageBuilder = ResponseMessage.build(requestId);
+    private static ByteBufAllocator allocator = UnpooledByteBufAllocator.DEFAULT;
+
+    public MessageSerializer serializer = new GraphSONMessageSerializerGremlinV1d0();
+
+    @Test
+    public void shouldSerializeIterable() throws Exception {
+        final ArrayList<Integer> list = new ArrayList<>();
+        list.add(1);
+        list.add(100);
+
+        final ResponseMessage response = convert(list);
+        assertCommon(response);
+
+        final List<Integer> deserializedFunList = (List<Integer>) response.getResult().getData();
+        assertEquals(2, deserializedFunList.size());
+        assertEquals(new Integer(1), deserializedFunList.get(0));
+        assertEquals(new Integer(100), deserializedFunList.get(1));
+    }
+
+    @Test
+    public void shouldSerializeIterableWithNull() throws Exception {
+        final ArrayList<Integer> list = new ArrayList<>();
+        list.add(1);
+        list.add(null);
+        list.add(100);
+
+        final ResponseMessage response = convert(list);
+        assertCommon(response);
+
+        final List<Integer> deserializedFunList = (List<Integer>) response.getResult().getData();
+        assertEquals(3, deserializedFunList.size());
+        assertEquals(new Integer(1), deserializedFunList.get(0));
+        assertNull(deserializedFunList.get(1));
+        assertEquals(new Integer(100), deserializedFunList.get(2));
+    }
+
+    @Test
+    public void shouldSerializeMap() throws Exception {
+        final Map<String, Object> map = new HashMap<>();
+        final Map<String, String> innerMap = new HashMap<>();
+        innerMap.put("a", "b");
+
+        map.put("x", 1);
+        map.put("y", "some");
+        map.put("z", innerMap);
+
+        final ResponseMessage response = convert(map);
+        assertCommon(response);
+
+        final Map<String, Object> deserializedMap = (Map<String, Object>) response.getResult().getData();
+        assertEquals(3, deserializedMap.size());
+        assertEquals(1, deserializedMap.get("x"));
+        assertEquals("some", deserializedMap.get("y"));
+
+        final Map<String, String> deserializedInnerMap = (Map<String, String>) deserializedMap.get("z");
+        assertEquals(1, deserializedInnerMap.size());
+        assertEquals("b", deserializedInnerMap.get("a"));
+    }
+
+    @Test
+    public void shouldSerializeMapEntries() throws Exception {
+        final Graph graph = TinkerGraph.open();
+        final Vertex v1 = graph.addVertex();
+        final Date d = new Date();
+
+        final Map<Object, Object> map = new HashMap<>();
+        map.put("x", 1);
+        map.put(v1, 100);
+        map.put(d, "test");
+
+        final ResponseMessage response = convert(IteratorUtils.asList(map.entrySet()));
+        assertCommon(response);
+
+        final List<Map<String, Object>> deserializedEntries = (List<Map<String, Object>>) response.getResult().getData();
+        assertEquals(3, deserializedEntries.size());
+        deserializedEntries.forEach(e -> {
+            if (e.containsKey("x"))
+                assertEquals(1, e.get("x"));
+            else if (e.containsKey(v1.id().toString()))
+                assertEquals(100, e.get(v1.id().toString()));
+            else if (e.containsKey(StdDateFormat.instance.format(d)))
+                assertEquals("test", e.get(StdDateFormat.instance.format(d)));
+            else
+                fail("Map entries contains a key that is not part of what was serialized");
+        });
+    }
+
+    @Test
+    public void shouldSerializeEdge() throws Exception {
+        final Graph graph = TinkerGraph.open();
+        final Vertex v1 = graph.addVertex();
+        final Vertex v2 = graph.addVertex();
+        final Edge e = v1.addEdge("test", v2);
+        e.property("abc", 123);
+
+        final Iterable<Edge> iterable = IteratorUtils.list(graph.edges());
+
+        final ResponseMessage response = convert(iterable);
+        assertCommon(response);
+
+        final List<Map<String, Object>> edgeList = (List<Map<String, Object>>) response.getResult().getData();
+        assertEquals(1, edgeList.size());
+
+        final Map<String, Object> deserializedEdge = edgeList.get(0);
+        assertEquals(e.id(), deserializedEdge.get(GraphSONTokens.ID));
+        assertEquals(v1.id(), deserializedEdge.get(GraphSONTokens.OUT));
+        assertEquals(v2.id(), deserializedEdge.get(GraphSONTokens.IN));
+        assertEquals(v1.label(), deserializedEdge.get(GraphSONTokens.OUT_LABEL));
+        assertEquals(v2.label(), deserializedEdge.get(GraphSONTokens.IN_LABEL));
+        assertEquals(e.label(), deserializedEdge.get(GraphSONTokens.LABEL));
+        assertEquals(GraphSONTokens.EDGE, deserializedEdge.get(GraphSONTokens.TYPE));
+
+        final Map<String, Object> properties = (Map<String, Object>) deserializedEdge.get(GraphSONTokens.PROPERTIES);
+        assertNotNull(properties);
+        assertEquals(123, properties.get("abc"));
+
+    }
+
+    @Test
+    public void shouldSerializeEdgeProperty() throws Exception {
+        final Graph graph = TinkerGraph.open();
+        final Vertex v1 = graph.addVertex();
+        final Vertex v2 = graph.addVertex();
+        final Edge e = v1.addEdge("test", v2);
+        e.property("abc", 123);
+
+        final Iterable<Property<Object>> iterable = IteratorUtils.list(e.properties("abc"));
+        final ResponseMessage response = convert(iterable);
+        assertCommon(response);
+
+        final List<Map<String, Object>> propertyList = (List<Map<String, Object>>) response.getResult().getData();
+        assertEquals(1, propertyList.size());
+        assertEquals(123, propertyList.get(0).get("value"));
+    }
+
+    @Test
+    public void shouldSerializeVertexWithEmbeddedMap() throws Exception {
+        final Graph graph = TinkerGraph.open();
+        final Vertex v = graph.addVertex();
+        final Map<String, Object> map = new HashMap<>();
+        map.put("x", 500);
+        map.put("y", "some");
+
+        final ArrayList<Object> friends = new ArrayList<>();
+        friends.add("x");
+        friends.add(5);
+        friends.add(map);
+
+        v.property(VertexProperty.Cardinality.single, "friends", friends);
+
+        final List list = IteratorUtils.list(graph.vertices());
+
+        final ResponseMessage response = convert(list);
+        assertCommon(response);
+
+        final List<Map<String, Object>> vertexList = (List<Map<String, Object>>) response.getResult().getData();
+        assertEquals(1, vertexList.size());
+
+        final Map<String, Object> deserializedVertex = vertexList.get(0);
+        assertEquals(v.id(), deserializedVertex.get(GraphSONTokens.ID));
+        assertEquals(Vertex.DEFAULT_LABEL, deserializedVertex.get(GraphSONTokens.LABEL));
+
+        final Map<String, Object> properties = ((Map<String, Object>) deserializedVertex.get(GraphSONTokens.PROPERTIES));
+        assertEquals(1, properties.size());
+
+        final List<Map<String,Object>> friendsProperties = (List<Map<String,Object>>) properties.get("friends");
+        assertEquals(1, friendsProperties.size());
+
+        final List<Object> deserializedInnerList = (List<Object>) friendsProperties.get(0).get(GraphSONTokens.VALUE);
+        assertEquals(3, deserializedInnerList.size());
+        assertEquals("x", deserializedInnerList.get(0));
+        assertEquals(5, deserializedInnerList.get(1));
+
+        final Map<String, Object> deserializedInnerInnerMap = (Map<String, Object>) deserializedInnerList.get(2);
+        assertEquals(2, deserializedInnerInnerMap.size());
+        assertEquals(500, deserializedInnerInnerMap.get("x"));
+        assertEquals("some", deserializedInnerInnerMap.get("y"));
+    }
+
+    @Test
+    public void shouldSerializeToJsonMapWithElementForKey() throws Exception {
+        final TinkerGraph graph = TinkerFactory.createClassic();
+        final GraphTraversalSource g = graph.traversal();
+        final Map<Vertex, Integer> map = new HashMap<>();
+        map.put(g.V().has("name", "marko").next(), 1000);
+
+        final ResponseMessage response = convert(map);
+        assertCommon(response);
+
+        final Map<String, Integer> deserializedMap = (Map<String, Integer>) response.getResult().getData();
+        assertEquals(1, deserializedMap.size());
+
+        // with no embedded types the key (which is a vertex) simply serializes out to an id
+        // {"result":{"1":1000},"code":200,"requestId":"2d62161b-9544-4f39-af44-62ec49f9a595","type":0}
+        assertEquals(new Integer(1000), deserializedMap.get("1"));
+    }
+
+    @Test
+    public void shouldSerializeToTreeJson() throws Exception {
+        final TinkerGraph graph = TinkerFactory.createClassic();
+        final GraphTraversalSource g = graph.traversal();
+        final Map t = g.V(1).out().properties("name").tree().next();
+
+        final ResponseMessage response = convert(t);
+        assertCommon(response);
+
+        final Map<String, Map<String, Map>> deserializedMap = (Map<String, Map<String, Map>>) response.getResult().getData();
+
+        assertEquals(1, deserializedMap.size());
+
+        //check the first object and it's properties
+        Map<String,Object> vertex = deserializedMap.get("1").get("key");
+        Map<String,List<Map>> vertexProperties = (Map<String, List<Map>>)vertex.get("properties");
+        assertEquals(1, (int)vertex.get("id"));
+        assertEquals("marko", vertexProperties.get("name").get(0).get("value"));
+
+        //check objects tree structure
+        //check Vertex property
+        Map<String, Map<String, Map>> subTreeMap =  deserializedMap.get("1").get("value");
+        Map<String, Map<String, Map>> subTreeMap2 = subTreeMap.get("2").get("value");
+        Map<String, String> vertexPropertiesDeep = subTreeMap2.get("3").get("key");
+        assertEquals("vadas", vertexPropertiesDeep.get("value"));
+        assertEquals("name", vertexPropertiesDeep.get("label"));
+
+        // check subitem
+        Map<String,Object> vertex2 = subTreeMap.get("3").get("key");
+        Map<String,List<Map>> vertexProperties2 = (Map<String, List<Map>>)vertex2.get("properties");
+
+        assertEquals("lop", vertexProperties2.get("name").get(0).get("value"));
+    }
+
+    @Test
+    public void shouldSerializeFullResponseMessage() throws Exception {
+        final UUID id = UUID.randomUUID();
+
+        final Map<String, Object> metaData = new HashMap<>();
+        metaData.put("test", "this");
+        metaData.put("one", 1);
+
+        final Map<String, Object> attributes = new HashMap<>();
+        attributes.put("test", "that");
+        attributes.put("two", 2);
+
+        final ResponseMessage response = ResponseMessage.build(id)
+                .responseMetaData(metaData)
+                .code(ResponseStatusCode.SUCCESS)
+                .result("some-result")
+                .statusAttributes(attributes)
+                .statusMessage("worked")
+                .create();
+
+        final ByteBuf bb = serializer.serializeResponseAsBinary(response, allocator);
+        final ResponseMessage deserialized = serializer.deserializeResponse(bb);
+
+        assertEquals(id, deserialized.getRequestId());
+        assertEquals("this", deserialized.getResult().getMeta().get("test"));
+        assertEquals(1, deserialized.getResult().getMeta().get("one"));
+        assertEquals("some-result", deserialized.getResult().getData());
+        assertEquals("that", deserialized.getStatus().getAttributes().get("test"));
+        assertEquals(2, deserialized.getStatus().getAttributes().get("two"));
+        assertEquals(ResponseStatusCode.SUCCESS.getValue(), deserialized.getStatus().getCode().getValue());
+        assertEquals("worked", deserialized.getStatus().getMessage());
+    }
+    
+    private void assertCommon(final ResponseMessage response) {
+        assertEquals(requestId, response.getRequestId());
+        assertEquals(ResponseStatusCode.SUCCESS, response.getStatus().getCode());
+    }
+
+    private ResponseMessage convert(final Object toSerialize) throws SerializationException {
+        final ByteBuf bb = serializer.serializeResponseAsBinary(responseMessageBuilder.result(toSerialize).create(), allocator);
+        return serializer.deserializeResponse(bb);
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV2d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV2d0.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV2d0.java
new file mode 100644
index 0000000..a7f8389
--- /dev/null
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV2d0.java
@@ -0,0 +1,341 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.driver.ser;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufAllocator;
+import io.netty.buffer.UnpooledByteBufAllocator;
+import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+import org.apache.tinkerpop.shaded.jackson.databind.util.StdDateFormat;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+
+/**
+ * Serializer tests that cover non-lossy serialization/deserialization methods.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class GraphSONMessageSerializerGremlinTestV2d0 {
+
+    private UUID requestId = UUID.fromString("6457272A-4018-4538-B9AE-08DD5DDC0AA1");
+    private ResponseMessage.Builder responseMessageBuilder = ResponseMessage.build(requestId);
+    private static ByteBufAllocator allocator = UnpooledByteBufAllocator.DEFAULT;
+
+    public MessageSerializer serializer = new GraphSONMessageSerializerGremlinV2d0();
+
+    @Test
+    public void shouldSerializeIterable() throws Exception {
+        final ArrayList<Integer> list = new ArrayList<>();
+        list.add(1);
+        list.add(100);
+
+        final ResponseMessage response = convert(list);
+        assertCommon(response);
+
+        final List<Integer> deserializedFunList = (List<Integer>) response.getResult().getData();
+        assertEquals(2, deserializedFunList.size());
+        assertEquals(new Integer(1), deserializedFunList.get(0));
+        assertEquals(new Integer(100), deserializedFunList.get(1));
+    }
+
+    @Test
+    public void shouldSerializeIterableWithNull() throws Exception {
+        final ArrayList<Integer> list = new ArrayList<>();
+        list.add(1);
+        list.add(null);
+        list.add(100);
+
+        final ResponseMessage response = convert(list);
+        assertCommon(response);
+
+        final List<Integer> deserializedFunList = (List<Integer>) response.getResult().getData();
+        assertEquals(3, deserializedFunList.size());
+        assertEquals(new Integer(1), deserializedFunList.get(0));
+        assertNull(deserializedFunList.get(1));
+        assertEquals(new Integer(100), deserializedFunList.get(2));
+    }
+
+    @Test
+    public void shouldSerializeMap() throws Exception {
+        final Map<String, Object> map = new HashMap<>();
+        final Map<String, String> innerMap = new HashMap<>();
+        innerMap.put("a", "b");
+
+        map.put("x", 1);
+        map.put("y", "some");
+        map.put("z", innerMap);
+
+        final ResponseMessage response = convert(map);
+        assertCommon(response);
+
+        final Map<String, Object> deserializedMap = (Map<String, Object>) response.getResult().getData();
+        assertEquals(3, deserializedMap.size());
+        assertEquals(1, deserializedMap.get("x"));
+        assertEquals("some", deserializedMap.get("y"));
+
+        final Map<String, String> deserializedInnerMap = (Map<String, String>) deserializedMap.get("z");
+        assertEquals(1, deserializedInnerMap.size());
+        assertEquals("b", deserializedInnerMap.get("a"));
+    }
+
+    @Test
+    public void shouldSerializeMapEntries() throws Exception {
+        final Graph graph = TinkerGraph.open();
+        final Vertex v1 = graph.addVertex();
+        final Date d = new Date();
+
+        final Map<Object, Object> map = new HashMap<>();
+        map.put("x", 1);
+        map.put(v1, 100);
+        map.put(d, "test");
+
+        final ResponseMessage response = convert(IteratorUtils.asList(map.entrySet()));
+        assertCommon(response);
+
+        final List<Map<String, Object>> deserializedEntries = (List<Map<String, Object>>) response.getResult().getData();
+        assertEquals(3, deserializedEntries.size());
+        deserializedEntries.forEach(e -> {
+            if (e.containsKey("x"))
+                assertEquals(1, e.get("x"));
+            else if (e.containsKey(v1.id().toString()))
+                assertEquals(100, e.get(v1.id().toString()));
+            else if (e.containsKey(StdDateFormat.instance.format(d)))
+                assertEquals("test", e.get(StdDateFormat.instance.format(d)));
+            else
+                fail("Map entries contains a key that is not part of what was serialized");
+        });
+    }
+
+    @Test
+    public void shouldSerializeEdge() throws Exception {
+        final Graph graph = TinkerGraph.open();
+        final Vertex v1 = graph.addVertex();
+        final Vertex v2 = graph.addVertex();
+        final Edge e = v1.addEdge("test", v2);
+        e.property("abc", 123);
+
+        final Iterable<Edge> iterable = IteratorUtils.list(graph.edges());
+
+        final ResponseMessage response = convert(iterable);
+        assertCommon(response);
+
+        final List<Edge> edgeList = (List<Edge>) response.getResult().getData();
+        assertEquals(1, edgeList.size());
+
+        final Edge deserializedEdge = edgeList.get(0);
+        assertEquals(e.id(), deserializedEdge.id());
+        assertEquals(v1.id(), deserializedEdge.outVertex().id());
+        assertEquals(v2.id(), deserializedEdge.inVertex().id());
+        assertEquals(v1.label(), deserializedEdge.outVertex().label());
+        assertEquals(v2.label(), deserializedEdge.inVertex().label());
+        assertEquals(e.label(), deserializedEdge.label());
+
+        final List<Property> properties = new ArrayList<>();
+        deserializedEdge.properties().forEachRemaining(properties::add);
+        assertEquals(1, properties.size());
+
+        assertNotNull(properties);
+        assertEquals("abc", properties.get(0).key());
+        assertEquals(123, properties.get(0).value());
+
+    }
+
+    @Test
+    public void shouldSerializeEdgeProperty() throws Exception {
+        final Graph graph = TinkerGraph.open();
+        final Vertex v1 = graph.addVertex();
+        final Vertex v2 = graph.addVertex();
+        final Edge e = v1.addEdge("test", v2);
+        e.property("abc", 123);
+
+        final Iterable<Property<Object>> iterable = IteratorUtils.list(e.properties("abc"));
+        final ResponseMessage response = convert(iterable);
+        assertCommon(response);
+
+        final List<Property> propertyList = (List<Property>) response.getResult().getData();
+        assertEquals(1, propertyList.size());
+        assertEquals(123, propertyList.get(0).value());
+    }
+
+    @Test
+    public void shouldSerializeVertexWithEmbeddedMap() throws Exception {
+        final Graph graph = TinkerGraph.open();
+        final Vertex v = graph.addVertex();
+        final Map<String, Object> map = new HashMap<>();
+        map.put("x", 500);
+        map.put("y", "some");
+
+        final ArrayList<Object> friends = new ArrayList<>();
+        friends.add("x");
+        friends.add(5);
+        friends.add(map);
+
+        v.property(VertexProperty.Cardinality.single, "friends", friends);
+
+        final List list = IteratorUtils.list(graph.vertices());
+
+        final ResponseMessage response = convert(list);
+        assertCommon(response);
+
+        final List<Vertex> vertexList = (List<Vertex>) response.getResult().getData();
+        assertEquals(1, vertexList.size());
+
+        final Vertex deserializedVertex = vertexList.get(0);
+        assertEquals(v.id(), deserializedVertex.id());
+        assertEquals(Vertex.DEFAULT_LABEL, deserializedVertex.label());
+
+        final List<VertexProperty> properties = new ArrayList<>();
+        deserializedVertex.properties().forEachRemaining(properties::add);
+        assertEquals(1, properties.size());
+
+        final VertexProperty friendsProperty = properties.get(0);
+        final List<Object> deserializedInnerList = (List<Object>) friendsProperty.value();
+
+        assertEquals(3, deserializedInnerList.size());
+        assertEquals("x", deserializedInnerList.get(0));
+        assertEquals(5, deserializedInnerList.get(1));
+
+        final Map<String, Object> deserializedInnerInnerMap = (Map<String, Object>) deserializedInnerList.get(2);
+        assertEquals(2, deserializedInnerInnerMap.size());
+        assertEquals(500, deserializedInnerInnerMap.get("x"));
+        assertEquals("some", deserializedInnerInnerMap.get("y"));
+    }
+
+    @Test
+    public void shouldSerializeToJsonMapWithElementForKey() throws Exception {
+        final TinkerGraph graph = TinkerFactory.createClassic();
+        final GraphTraversalSource g = graph.traversal();
+        final Map<Vertex, Integer> map = new HashMap<>();
+        map.put(g.V().has("name", "marko").next(), 1000);
+
+        final ResponseMessage response = convert(map);
+        assertCommon(response);
+
+        final Map<String, Integer> deserializedMap = (Map<String, Integer>) response.getResult().getData();
+        assertEquals(1, deserializedMap.size());
+
+        // with no embedded types the key (which is a vertex) simply serializes out to an id
+        // {"result":{"1":1000},"code":200,"requestId":"2d62161b-9544-4f39-af44-62ec49f9a595","type":0}
+        assertEquals(new Integer(1000), deserializedMap.get("1"));
+    }
+
+    @Test
+    public void shouldSerializeToTreeJson() throws Exception {
+        final TinkerGraph graph = TinkerFactory.createClassic();
+        final GraphTraversalSource g = graph.traversal();
+        final Map t = g.V(1).out().properties("name").tree().next();
+
+        final ResponseMessage response = convert(t);
+        assertCommon(response);
+
+        final Tree deserializedTree = (Tree)response.getResult().getData();
+
+        //check the first object and its key's properties
+        assertEquals(1, deserializedTree.size());
+        Vertex v = ((Vertex) deserializedTree.keySet().iterator().next());
+        assertEquals(1, v.id());
+        assertEquals("marko", v.property("name").value());
+
+        Tree firstTree = (Tree)deserializedTree.get(v);
+        assertEquals(3, firstTree.size());
+        Iterator<Vertex> vertexKeys = firstTree.keySet().iterator();
+
+        Tree t2 = (Tree)firstTree.get(vertexKeys.next());
+        VertexProperty vp = (VertexProperty)t2.keySet().iterator().next();
+        assertEquals(3, vp.id());
+        assertEquals("vadas", vp.value());
+
+        t2 = (Tree) firstTree.get(vertexKeys.next());
+        vp = (VertexProperty) t2.keySet().iterator().next();
+        assertEquals(5, vp.id());
+        assertEquals("lop", vp.value());
+
+        t2 = (Tree) firstTree.get(vertexKeys.next());
+        vp = (VertexProperty) t2.keySet().iterator().next();
+        assertEquals(7, vp.id());
+        assertEquals("josh", vp.value());
+    }
+
+    @Test
+    public void shouldSerializeFullResponseMessage() throws Exception {
+        final UUID id = UUID.randomUUID();
+
+        final Map<String, Object> metaData = new HashMap<>();
+        metaData.put("test", "this");
+        metaData.put("one", 1);
+
+        final Map<String, Object> attributes = new HashMap<>();
+        attributes.put("test", "that");
+        attributes.put("two", 2);
+
+        final ResponseMessage response = ResponseMessage.build(id)
+                .responseMetaData(metaData)
+                .code(ResponseStatusCode.SUCCESS)
+                .result("some-result")
+                .statusAttributes(attributes)
+                .statusMessage("worked")
+                .create();
+
+        final ByteBuf bb = serializer.serializeResponseAsBinary(response, allocator);
+        final ResponseMessage deserialized = serializer.deserializeResponse(bb);
+
+        assertEquals(id, deserialized.getRequestId());
+        assertEquals("this", deserialized.getResult().getMeta().get("test"));
+        assertEquals(1, deserialized.getResult().getMeta().get("one"));
+        assertEquals("some-result", deserialized.getResult().getData());
+        assertEquals("that", deserialized.getStatus().getAttributes().get("test"));
+        assertEquals(2, deserialized.getStatus().getAttributes().get("two"));
+        assertEquals(ResponseStatusCode.SUCCESS.getValue(), deserialized.getStatus().getCode().getValue());
+        assertEquals("worked", deserialized.getStatus().getMessage());
+    }
+    
+    private void assertCommon(final ResponseMessage response) {
+        assertEquals(requestId, response.getRequestId());
+        assertEquals(ResponseStatusCode.SUCCESS, response.getStatus().getCode());
+    }
+
+    private ResponseMessage convert(final Object toSerialize) throws SerializationException {
+        final ByteBuf bb = serializer.serializeResponseAsBinary(responseMessageBuilder.result(toSerialize).create(), allocator);
+        return serializer.deserializeResponse(bb);
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinV1d0Test.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinV1d0Test.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinV1d0Test.java
deleted file mode 100644
index 0091a5f..0000000
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinV1d0Test.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.driver.ser;
-
-import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
-import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
-import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.ByteBufAllocator;
-import io.netty.buffer.UnpooledByteBufAllocator;
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
-import org.apache.tinkerpop.shaded.jackson.databind.util.StdDateFormat;
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
-
-/**
- * Serializer tests that cover non-lossy serialization/deserialization methods.
- *
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class GraphSONMessageSerializerGremlinV1d0Test {
-    private UUID requestId = UUID.fromString("6457272A-4018-4538-B9AE-08DD5DDC0AA1");
-    private ResponseMessage.Builder responseMessageBuilder = ResponseMessage.build(requestId);
-    private static ByteBufAllocator allocator = UnpooledByteBufAllocator.DEFAULT;
-
-    public MessageSerializer serializer = new GraphSONMessageSerializerGremlinV1d0();
-
-    @Test
-    public void shouldSerializeIterable() throws Exception {
-        final ArrayList<Integer> list = new ArrayList<>();
-        list.add(1);
-        list.add(100);
-
-        final ResponseMessage response = convert(list);
-        assertCommon(response);
-
-        final List<Integer> deserializedFunList = (List<Integer>) response.getResult().getData();
-        assertEquals(2, deserializedFunList.size());
-        assertEquals(new Integer(1), deserializedFunList.get(0));
-        assertEquals(new Integer(100), deserializedFunList.get(1));
-    }
-
-    @Test
-    public void shouldSerializeIterableWithNull() throws Exception {
-        final ArrayList<Integer> list = new ArrayList<>();
-        list.add(1);
-        list.add(null);
-        list.add(100);
-
-        final ResponseMessage response = convert(list);
-        assertCommon(response);
-
-        final List<Integer> deserializedFunList = (List<Integer>) response.getResult().getData();
-        assertEquals(3, deserializedFunList.size());
-        assertEquals(new Integer(1), deserializedFunList.get(0));
-        assertNull(deserializedFunList.get(1));
-        assertEquals(new Integer(100), deserializedFunList.get(2));
-    }
-
-    @Test
-    public void shouldSerializeMap() throws Exception {
-        final Map<String, Object> map = new HashMap<>();
-        final Map<String, String> innerMap = new HashMap<>();
-        innerMap.put("a", "b");
-
-        map.put("x", 1);
-        map.put("y", "some");
-        map.put("z", innerMap);
-
-        final ResponseMessage response = convert(map);
-        assertCommon(response);
-
-        final Map<String, Object> deserializedMap = (Map<String, Object>) response.getResult().getData();
-        assertEquals(3, deserializedMap.size());
-        assertEquals(1, deserializedMap.get("x"));
-        assertEquals("some", deserializedMap.get("y"));
-
-        final Map<String, String> deserializedInnerMap = (Map<String, String>) deserializedMap.get("z");
-        assertEquals(1, deserializedInnerMap.size());
-        assertEquals("b", deserializedInnerMap.get("a"));
-    }
-
-    @Test
-    public void shouldSerializeMapEntries() throws Exception {
-        final Graph graph = TinkerGraph.open();
-        final Vertex v1 = graph.addVertex();
-        final Date d = new Date();
-
-        final Map<Object, Object> map = new HashMap<>();
-        map.put("x", 1);
-        map.put(v1, 100);
-        map.put(d, "test");
-
-        final ResponseMessage response = convert(IteratorUtils.asList(map.entrySet()));
-        assertCommon(response);
-
-        final List<Map<String, Object>> deserializedEntries = (List<Map<String, Object>>) response.getResult().getData();
-        assertEquals(3, deserializedEntries.size());
-        deserializedEntries.forEach(e -> {
-            if (e.containsKey("x"))
-                assertEquals(1, e.get("x"));
-            else if (e.containsKey(v1.id().toString()))
-                assertEquals(100, e.get(v1.id().toString()));
-            else if (e.containsKey(StdDateFormat.instance.format(d)))
-                assertEquals("test", e.get(StdDateFormat.instance.format(d)));
-            else
-                fail("Map entries contains a key that is not part of what was serialized");
-        });
-    }
-
-    @Test
-    public void shouldSerializeEdge() throws Exception {
-        final Graph graph = TinkerGraph.open();
-        final Vertex v1 = graph.addVertex();
-        final Vertex v2 = graph.addVertex();
-        final Edge e = v1.addEdge("test", v2);
-        e.property("abc", 123);
-
-        final Iterable<Edge> iterable = IteratorUtils.list(graph.edges());
-
-        final ResponseMessage response = convert(iterable);
-        assertCommon(response);
-
-        final List<Map<String, Object>> edgeList = (List<Map<String, Object>>) response.getResult().getData();
-        assertEquals(1, edgeList.size());
-
-        final Map<String, Object> deserializedEdge = edgeList.get(0);
-        assertEquals(e.id(), deserializedEdge.get(GraphSONTokens.ID));
-        assertEquals(v1.id(), deserializedEdge.get(GraphSONTokens.OUT));
-        assertEquals(v2.id(), deserializedEdge.get(GraphSONTokens.IN));
-        assertEquals(v1.label(), deserializedEdge.get(GraphSONTokens.OUT_LABEL));
-        assertEquals(v2.label(), deserializedEdge.get(GraphSONTokens.IN_LABEL));
-        assertEquals(e.label(), deserializedEdge.get(GraphSONTokens.LABEL));
-        assertEquals(GraphSONTokens.EDGE, deserializedEdge.get(GraphSONTokens.TYPE));
-
-        final Map<String, Object> properties = (Map<String, Object>) deserializedEdge.get(GraphSONTokens.PROPERTIES);
-        assertNotNull(properties);
-        assertEquals(123, properties.get("abc"));
-
-    }
-
-    @Test
-    public void shouldSerializeEdgeProperty() throws Exception {
-        final Graph graph = TinkerGraph.open();
-        final Vertex v1 = graph.addVertex();
-        final Vertex v2 = graph.addVertex();
-        final Edge e = v1.addEdge("test", v2);
-        e.property("abc", 123);
-
-        final Iterable<Property<Object>> iterable = IteratorUtils.list(e.properties("abc"));
-        final ResponseMessage response = convert(iterable);
-        assertCommon(response);
-
-        final List<Map<String, Object>> propertyList = (List<Map<String, Object>>) response.getResult().getData();
-        assertEquals(1, propertyList.size());
-        assertEquals(123, propertyList.get(0).get("value"));
-    }
-
-    @Test
-    public void shouldSerializeVertexWithEmbeddedMap() throws Exception {
-        final Graph graph = TinkerGraph.open();
-        final Vertex v = graph.addVertex();
-        final Map<String, Object> map = new HashMap<>();
-        map.put("x", 500);
-        map.put("y", "some");
-
-        final ArrayList<Object> friends = new ArrayList<>();
-        friends.add("x");
-        friends.add(5);
-        friends.add(map);
-
-        v.property(VertexProperty.Cardinality.single, "friends", friends);
-
-        final List list = IteratorUtils.list(graph.vertices());
-
-        final ResponseMessage response = convert(list);
-        assertCommon(response);
-
-        final List<Map<String, Object>> vertexList = (List<Map<String, Object>>) response.getResult().getData();
-        assertEquals(1, vertexList.size());
-
-        final Map<String, Object> deserializedVertex = vertexList.get(0);
-        assertEquals(v.id(), deserializedVertex.get(GraphSONTokens.ID));
-        assertEquals(Vertex.DEFAULT_LABEL, deserializedVertex.get(GraphSONTokens.LABEL));
-
-        final Map<String, Object> properties = ((Map<String, Object>) deserializedVertex.get(GraphSONTokens.PROPERTIES));
-        assertEquals(1, properties.size());
-
-        final List<Map<String,Object>> friendsProperties = (List<Map<String,Object>>) properties.get("friends");
-        assertEquals(1, friendsProperties.size());
-
-        final List<Object> deserializedInnerList = (List<Object>) friendsProperties.get(0).get(GraphSONTokens.VALUE);
-        assertEquals(3, deserializedInnerList.size());
-        assertEquals("x", deserializedInnerList.get(0));
-        assertEquals(5, deserializedInnerList.get(1));
-
-        final Map<String, Object> deserializedInnerInnerMap = (Map<String, Object>) deserializedInnerList.get(2);
-        assertEquals(2, deserializedInnerInnerMap.size());
-        assertEquals(500, deserializedInnerInnerMap.get("x"));
-        assertEquals("some", deserializedInnerInnerMap.get("y"));
-    }
-
-    @Test
-    public void shouldSerializeToJsonMapWithElementForKey() throws Exception {
-        final TinkerGraph graph = TinkerFactory.createClassic();
-        final GraphTraversalSource g = graph.traversal();
-        final Map<Vertex, Integer> map = new HashMap<>();
-        map.put(g.V().has("name", "marko").next(), 1000);
-
-        final ResponseMessage response = convert(map);
-        assertCommon(response);
-
-        final Map<String, Integer> deserializedMap = (Map<String, Integer>) response.getResult().getData();
-        assertEquals(1, deserializedMap.size());
-
-        // with no embedded types the key (which is a vertex) simply serializes out to an id
-        // {"result":{"1":1000},"code":200,"requestId":"2d62161b-9544-4f39-af44-62ec49f9a595","type":0}
-        assertEquals(new Integer(1000), deserializedMap.get("1"));
-    }
-
-    @Test
-    public void shouldSerializeToJsonTree() throws Exception {
-        final TinkerGraph graph = TinkerFactory.createClassic();
-        final GraphTraversalSource g = graph.traversal();
-        final Map t = g.V(1).out().properties("name").tree().next();
-
-        final ResponseMessage response = convert(t);
-        assertCommon(response);
-
-        final Map<String, Map<String, Map>> deserializedMap = (Map<String, Map<String, Map>>) response.getResult().getData();
-        
-        assertEquals(1, deserializedMap.size());
-        
-        //check the first object and it's properties
-        Map<String,Object> vertex = deserializedMap.get("1").get("key");
-        Map<String,List<Map>> vertexProperties = (Map<String, List<Map>>)vertex.get("properties");
-        assertEquals(1, (int)vertex.get("id"));
-        assertEquals("marko", vertexProperties.get("name").get(0).get("value"));
-        
-        //check objects tree structure
-        //check Vertex property
-        Map<String, Map<String, Map>> subTreeMap =  deserializedMap.get("1").get("value");
-        Map<String, Map<String, Map>> subTreeMap2 = subTreeMap.get("2").get("value");
-        Map<String, String> vertexPropertiesDeep = subTreeMap2.get("3").get("key");
-        assertEquals("vadas", vertexPropertiesDeep.get("value"));
-        assertEquals("name", vertexPropertiesDeep.get("label"));
-        
-        // check subitem
-        Map<String,Object> vertex2 = subTreeMap.get("3").get("key");
-        Map<String,List<Map>> vertexProperties2 = (Map<String, List<Map>>)vertex2.get("properties");
-        
-        assertEquals("lop", vertexProperties2.get("name").get(0).get("value"));
-    }
-
-    @Test
-    public void shouldSerializeFullResponseMessage() throws Exception {
-        final UUID id = UUID.randomUUID();
-
-        final Map<String, Object> metaData = new HashMap<>();
-        metaData.put("test", "this");
-        metaData.put("one", 1);
-
-        final Map<String, Object> attributes = new HashMap<>();
-        attributes.put("test", "that");
-        attributes.put("two", 2);
-
-        final ResponseMessage response = ResponseMessage.build(id)
-                .responseMetaData(metaData)
-                .code(ResponseStatusCode.SUCCESS)
-                .result("some-result")
-                .statusAttributes(attributes)
-                .statusMessage("worked")
-                .create();
-
-        final ByteBuf bb = serializer.serializeResponseAsBinary(response, allocator);
-        final ResponseMessage deserialized = serializer.deserializeResponse(bb);
-
-        assertEquals(id, deserialized.getRequestId());
-        assertEquals("this", deserialized.getResult().getMeta().get("test"));
-        assertEquals(1, deserialized.getResult().getMeta().get("one"));
-        assertEquals("some-result", deserialized.getResult().getData());
-        assertEquals("that", deserialized.getStatus().getAttributes().get("test"));
-        assertEquals(2, deserialized.getStatus().getAttributes().get("two"));
-        assertEquals(ResponseStatusCode.SUCCESS.getValue(), deserialized.getStatus().getCode().getValue());
-        assertEquals("worked", deserialized.getStatus().getMessage());
-    }
-    
-    private void assertCommon(final ResponseMessage response) {
-        assertEquals(requestId, response.getRequestId());
-        assertEquals(ResponseStatusCode.SUCCESS, response.getStatus().getCode());
-    }
-
-    private ResponseMessage convert(final Object toSerialize) throws SerializationException {
-        final ByteBuf bb = serializer.serializeResponseAsBinary(responseMessageBuilder.result(toSerialize).create(), allocator);
-        return serializer.deserializeResponse(bb);
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV1d0Test.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV1d0Test.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV1d0Test.java
index a4cee54..bf1ddcb 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV1d0Test.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV1d0Test.java
@@ -22,6 +22,7 @@ import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
 import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
 import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Property;
@@ -35,21 +36,16 @@ import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.apache.tinkerpop.shaded.jackson.core.JsonGenerationException;
 import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
-import org.apache.tinkerpop.shaded.jackson.core.JsonParser;
-import org.apache.tinkerpop.shaded.jackson.core.JsonProcessingException;
-import org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext;
 import org.apache.tinkerpop.shaded.jackson.databind.JsonNode;
 import org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper;
 import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
-import org.apache.tinkerpop.shaded.jackson.databind.deser.std.StdDeserializer;
-import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
 import org.apache.tinkerpop.shaded.jackson.databind.module.SimpleModule;
 import org.apache.tinkerpop.shaded.jackson.databind.node.NullNode;
 import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
 import org.apache.tinkerpop.shaded.jackson.databind.util.StdDateFormat;
 import org.junit.Test;
 
-import java.awt.*;
+import java.awt.Color;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -57,7 +53,6 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.Is.is;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
new file mode 100644
index 0000000..de9b493
--- /dev/null
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
@@ -0,0 +1,507 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.driver.ser;
+
+import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.io.AbstractIoRegistry;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONIo;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerationException;
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
+import org.apache.tinkerpop.shaded.jackson.databind.JsonNode;
+import org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper;
+import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
+import org.apache.tinkerpop.shaded.jackson.databind.module.SimpleModule;
+import org.apache.tinkerpop.shaded.jackson.databind.node.NullNode;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.util.StdDateFormat;
+import org.junit.Test;
+
+import java.awt.Color;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+/**
+ * These tests focus on message serialization and not "result" serialization as test specific to results (e.g.
+ * vertices, edges, annotated values, etc.) are handled in the IO packages.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class GraphSONMessageSerializerV2d0Test {
+
+    public static final GraphSONMessageSerializerV2d0 SERIALIZER = new GraphSONMessageSerializerV2d0();
+    private static final RequestMessage msg = RequestMessage.build("op")
+            .overrideRequestId(UUID.fromString("2D62161B-9544-4F39-AF44-62EC49F9A595")).create();
+    private static final ObjectMapper mapper = new ObjectMapper();
+
+    @Test
+    public void shouldConfigureIoRegistry() throws Exception {
+        final GraphSONMessageSerializerV1d0 serializer = new GraphSONMessageSerializerV1d0();
+        final Map<String, Object> config = new HashMap<String, Object>() {{
+            put(GryoMessageSerializerV1d0.TOKEN_IO_REGISTRIES, Arrays.asList(ColorIoRegistry.class.getName()));
+        }};
+
+        serializer.configure(config, null);
+
+        final ResponseMessage toSerialize = ResponseMessage.build(UUID.fromString("2D62161B-9544-4F39-AF44-62EC49F9A595"))
+                .result(Color.RED).create();
+        final String results = serializer.serializeResponseAsString(toSerialize);
+        final JsonNode json = mapper.readTree(results);
+        assertNotNull(json);
+        assertThat(json.get(SerTokens.TOKEN_RESULT).get(SerTokens.TOKEN_DATA).booleanValue(), is(true));
+    }
+
+    @Test
+    public void shouldSerializeToJsonNullResultReturnsNull() throws Exception {
+        final ResponseMessage message = ResponseMessage.build(msg).create();
+        final String results = SERIALIZER.serializeResponseAsString(message);
+        final JsonNode json = mapper.readTree(results);
+        assertNotNull(json);
+        assertEquals(msg.getRequestId().toString(), json.path(SerTokens.TOKEN_REQUEST).asText());
+        assertEquals(NullNode.getInstance(), json.get(SerTokens.TOKEN_RESULT).get(SerTokens.TOKEN_DATA));
+    }
+
+    @Test
+    public void shouldSerializeToJsonIterable() throws Exception {
+        final ArrayList<FunObject> funList = new ArrayList<>();
+        funList.add(new FunObject("x"));
+        funList.add(new FunObject("y"));
+
+        final String results = SERIALIZER.serializeResponseAsString(ResponseMessage.build(msg).result(funList).create());
+        final JsonNode json = mapper.readTree(results);
+
+        assertNotNull(json);
+        assertEquals(msg.getRequestId().toString(), json.get(SerTokens.TOKEN_REQUEST).asText());
+        final JsonNode converted = json.get(SerTokens.TOKEN_RESULT).get(SerTokens.TOKEN_DATA);
+
+        assertEquals(2, converted.size());
+
+        assertEquals("x", converted.get(0).asText());
+        assertEquals("y", converted.get(1).asText());
+    }
+
+    @Test
+    public void shouldSerializeToJsonIterator() throws Exception {
+        final ArrayList<FunObject> funList = new ArrayList<>();
+        funList.add(new FunObject("x"));
+        funList.add(new FunObject("y"));
+
+        final String results = SERIALIZER.serializeResponseAsString(ResponseMessage.build(msg).result(funList).create());
+        final JsonNode json = mapper.readTree(results);
+
+        assertNotNull(json);
+        assertEquals(msg.getRequestId().toString(), json.get(SerTokens.TOKEN_REQUEST).asText());
+        final JsonNode converted = json.get(SerTokens.TOKEN_RESULT).get(SerTokens.TOKEN_DATA);
+
+        assertEquals(2, converted.size());
+
+        assertEquals("x", converted.get(0).asText());
+        assertEquals("y", converted.get(1).asText());
+    }
+
+    @Test
+    public void shouldSerializeToJsonIteratorNullElement() throws Exception {
+
+        final ArrayList<FunObject> funList = new ArrayList<>();
+        funList.add(new FunObject("x"));
+        funList.add(null);
+        funList.add(new FunObject("y"));
+
+        final String results = SERIALIZER.serializeResponseAsString(ResponseMessage.build(msg).result(funList.iterator()).create());
+        final JsonNode json = mapper.readTree(results);
+
+        assertNotNull(json);
+        assertEquals(msg.getRequestId().toString(), json.get(SerTokens.TOKEN_REQUEST).asText());
+        final JsonNode converted = json.get(SerTokens.TOKEN_RESULT).get(SerTokens.TOKEN_DATA);
+
+        assertEquals(3, converted.size());
+
+        assertEquals("x", converted.get(0).asText());
+        assertEquals(NullNode.getInstance(), converted.get(1));
+        assertEquals("y", converted.get(2).asText());
+    }
+
+    @Test
+    public void shouldSerializeToJsonMap() throws Exception {
+        final Map<String, Object> map = new HashMap<>();
+        final Map<String, String> innerMap = new HashMap<>();
+        innerMap.put("a", "b");
+
+        map.put("x", new FunObject("x"));
+        map.put("y", "some");
+        map.put("z", innerMap);
+
+        final String results = SERIALIZER.serializeResponseAsString(ResponseMessage.build(msg).result(map).create());
+        final JsonNode json = mapper.readTree(results);
+
+        assertNotNull(json);
+        assertEquals(msg.getRequestId().toString(), json.get(SerTokens.TOKEN_REQUEST).asText());
+        final JsonNode jsonObject = json.get(SerTokens.TOKEN_RESULT).get(SerTokens.TOKEN_DATA);
+
+        assertNotNull(jsonObject);
+        assertEquals("some", jsonObject.get("y").asText());
+        assertEquals("x", jsonObject.get("x").asText());
+
+        final JsonNode innerJsonObject = jsonObject.get("z");
+        assertNotNull(innerJsonObject);
+        assertEquals("b", innerJsonObject.get("a").asText());
+    }
+
+    @Test
+    public void shouldShouldSerializeMapEntries() throws Exception {
+        final Graph graph = TinkerGraph.open();
+        final Vertex v1 = graph.addVertex();
+        final Date d = new Date();
+
+        final Map<Object, Object> map = new HashMap<>();
+        map.put("x", 1);
+        map.put(v1, 100);
+        map.put(d, "test");
+
+        final String results = SERIALIZER.serializeResponseAsString(ResponseMessage.build(msg).result(IteratorUtils.asList(map)).create());
+        final JsonNode json = mapper.readTree(results);
+
+        assertNotNull(json);
+        assertEquals(msg.getRequestId().toString(), json.get(SerTokens.TOKEN_REQUEST).asText());
+        final JsonNode jsonObject = json.get(SerTokens.TOKEN_RESULT).get(SerTokens.TOKEN_DATA);
+        jsonObject.elements().forEachRemaining(e -> {
+            if (e.has("x"))
+                assertEquals(1, e.get("x").get(GraphSONTokens.VALUEPROP).asInt());
+            else if (e.has(v1.id().toString()))
+                assertEquals(100, e.get(v1.id().toString()).get(GraphSONTokens.VALUEPROP).asInt());
+            else if (e.has(StdDateFormat.instance.format(d)))
+                assertEquals("test", e.get(StdDateFormat.instance.format(d)).asText());
+            else
+                fail("Map entries contains a key that is not part of what was serialized");
+        });
+    }
+
+    @Test
+    public void shouldSerializeEdge() throws Exception {
+        final Graph g = TinkerGraph.open();
+        final Vertex v1 = g.addVertex();
+        final Vertex v2 = g.addVertex();
+        final Edge e = v1.addEdge("test", v2);
+        e.property("abc", 123);
+
+        final Iterable<Edge> iterable = IteratorUtils.list(g.edges());
+        final String results = SERIALIZER.serializeResponseAsString(ResponseMessage.build(msg).result(iterable).create());
+
+        final JsonNode json = mapper.readTree(results);
+
+        assertNotNull(json);
+        assertEquals(msg.getRequestId().toString(), json.get(SerTokens.TOKEN_REQUEST).asText());
+        final JsonNode converted = json.get(SerTokens.TOKEN_RESULT).get(SerTokens.TOKEN_DATA);
+
+        assertNotNull(converted);
+        assertEquals(1, converted.size());
+
+        final JsonNode edgeAsJson = converted.get(0).get(GraphSONTokens.VALUEPROP);
+        assertNotNull(edgeAsJson);
+
+        assertEquals(((Long) e.id()).longValue(), edgeAsJson.get(GraphSONTokens.ID).get(GraphSONTokens.VALUEPROP).asLong());
+        assertEquals(((Long) v1.id()).longValue(), edgeAsJson.get(GraphSONTokens.OUT).get(GraphSONTokens.VALUEPROP).asLong());
+        assertEquals(((Long) v2.id()).longValue(), edgeAsJson.get(GraphSONTokens.IN).get(GraphSONTokens.VALUEPROP).asLong());
+        assertEquals(e.label(), edgeAsJson.get(GraphSONTokens.LABEL).asText());
+
+        final JsonNode properties = edgeAsJson.get(GraphSONTokens.PROPERTIES);
+        assertNotNull(properties);
+        assertEquals(123, properties.get("abc").get(GraphSONTokens.VALUEPROP).get("value").get(GraphSONTokens.VALUEPROP).asInt());
+    }
+
+    @Test
+    public void shouldSerializeEdgeProperty() throws Exception {
+        final Graph g = TinkerGraph.open();
+        final Vertex v1 = g.addVertex();
+        final Vertex v2 = g.addVertex();
+        final Edge e = v1.addEdge("test", v2);
+        e.property("abc", 123);
+
+        final Iterable<Property<Object>> iterable = IteratorUtils.list(e.properties("abc"));
+        final String results = SERIALIZER.serializeResponseAsString(ResponseMessage.build(msg).result(iterable).create());
+
+        final JsonNode json = mapper.readTree(results);
+
+        assertNotNull(json);
+        assertEquals(msg.getRequestId().toString(), json.get(SerTokens.TOKEN_REQUEST).asText());
+        final JsonNode converted = json.get(SerTokens.TOKEN_RESULT).get(SerTokens.TOKEN_DATA);
+
+        assertNotNull(converted);
+        assertEquals(1, converted.size());
+
+        final JsonNode propertyAsJson = converted.get(0);
+        assertNotNull(propertyAsJson);
+
+        assertEquals(123, propertyAsJson.get(GraphSONTokens.VALUEPROP).get("value").get(GraphSONTokens.VALUEPROP).asInt());
+    }
+
+    @Test
+    public void shouldSerializeToJsonIteratorWithEmbeddedMap() throws Exception {
+        final Graph g = TinkerGraph.open();
+        final Vertex v = g.addVertex();
+        final Map<String, Object> map = new HashMap<>();
+        map.put("x", 500);
+        map.put("y", "some");
+
+        final ArrayList<Object> friends = new ArrayList<>();
+        friends.add("x");
+        friends.add(5);
+        friends.add(map);
+
+        v.property(VertexProperty.Cardinality.single, "friends", friends);
+
+        final Iterable iterable = IteratorUtils.list(g.vertices());
+        final String results = SERIALIZER.serializeResponseAsString(ResponseMessage.build(msg).result(iterable).create());
+        final JsonNode json = mapper.readTree(results);
+
+        assertNotNull(json);
+        assertEquals(msg.getRequestId().toString(), json.get(SerTokens.TOKEN_REQUEST).asText());
+        final JsonNode converted = json.get(SerTokens.TOKEN_RESULT).get(SerTokens.TOKEN_DATA);
+
+        assertNotNull(converted);
+        assertEquals(1, converted.size());
+
+        final JsonNode vertexAsJson = converted.get(0).get(GraphSONTokens.VALUEPROP);
+        assertNotNull(vertexAsJson);
+
+        final JsonNode properties = vertexAsJson.get(GraphSONTokens.PROPERTIES);
+        assertNotNull(properties);
+        assertEquals(1, properties.size());
+
+        final JsonNode friendProperties = properties.get("friends");
+        assertEquals(1, friendProperties.size());
+        final JsonNode friendsProperty = friendProperties.get(0).get(GraphSONTokens.VALUEPROP);
+        assertNotNull(friendsProperty);
+        assertEquals(3, friendsProperty.size());
+
+        final String object1 = friendsProperty.get(GraphSONTokens.VALUE).get(0).asText();
+        assertEquals("x", object1);
+
+        final int object2 = friendsProperty.get(GraphSONTokens.VALUE).get(1).get(GraphSONTokens.VALUEPROP).asInt();
+        assertEquals(5, object2);
+
+        final JsonNode object3 = friendsProperty.get(GraphSONTokens.VALUE).get(2);
+        assertEquals(500, object3.get("x").get(GraphSONTokens.VALUEPROP).asInt());
+        assertEquals("some", object3.get("y").asText());
+    }
+
+    @Test
+    public void shouldSerializeToJsonMapWithElementForKey() throws Exception {
+        final TinkerGraph graph = TinkerFactory.createClassic();
+        final GraphTraversalSource g = graph.traversal();
+        final Map<Vertex, Integer> map = new HashMap<>();
+        map.put(g.V().has("name", "marko").next(), 1000);
+
+        final String results = SERIALIZER.serializeResponseAsString(ResponseMessage.build(msg).result(map).create());
+        final JsonNode json = mapper.readTree(results);
+
+        assertNotNull(json);
+        assertEquals(msg.getRequestId().toString(), json.get(SerTokens.TOKEN_REQUEST).asText());
+        final JsonNode converted = json.get(SerTokens.TOKEN_RESULT).get(SerTokens.TOKEN_DATA);
+
+        assertNotNull(converted);
+
+        // with no embedded types the key (which is a vertex) simply serializes out to an id
+        // {"result":{"1":1000},"code":200,"requestId":"2d62161b-9544-4f39-af44-62ec49f9a595","type":0}
+        assertEquals(1000, converted.get("1").get(GraphSONTokens.VALUEPROP).asInt());
+    }
+
+    @Test
+    public void shouldDeserializeRequestNicelyWithNoArgs() throws Exception {
+        final UUID request = UUID.fromString("011CFEE9-F640-4844-AC93-034448AC0E80");
+        final RequestMessage m = SERIALIZER.deserializeRequest(String.format("{\"requestId\":\"%s\",\"op\":\"eval\"}", request));
+        assertEquals(request, m.getRequestId());
+        assertEquals("eval", m.getOp());
+        assertNotNull(m.getArgs());
+        assertEquals(0, m.getArgs().size());
+    }
+
+    @Test
+    public void shouldDeserializeRequestNicelyWithArgs() throws Exception {
+        final UUID request = UUID.fromString("011CFEE9-F640-4844-AC93-034448AC0E80");
+        final RequestMessage m = SERIALIZER.deserializeRequest(String.format("{\"requestId\":\"%s\",\"op\":\"eval\",\"args\":{\"x\":\"y\"}}", request));
+        assertEquals(request, m.getRequestId());
+        assertEquals("eval", m.getOp());
+        assertNotNull(m.getArgs());
+        assertEquals("y", m.getArgs().get("x"));
+    }
+
+    @Test(expected = SerializationException.class)
+    public void shouldDeserializeRequestParseMessage() throws Exception {
+        SERIALIZER.deserializeRequest("{\"requestId\":\"%s\",\"op\":\"eval\",\"args\":{\"x\":\"y\"}}");
+    }
+
+    @Test
+    public void shouldSerializeFullResponseMessage() throws Exception {
+        final UUID id = UUID.randomUUID();
+
+        final Map<String, Object> metaData = new HashMap<>();
+        metaData.put("test", "this");
+        metaData.put("one", 1);
+
+        final Map<String, Object> attributes = new HashMap<>();
+        attributes.put("test", "that");
+        attributes.put("two", 2);
+
+        final ResponseMessage response = ResponseMessage.build(id)
+                .responseMetaData(metaData)
+                .code(ResponseStatusCode.SUCCESS)
+                .result("some-result")
+                .statusAttributes(attributes)
+                .statusMessage("worked")
+                .create();
+
+        final String results = SERIALIZER.serializeResponseAsString(response);
+        final ResponseMessage deserialized = SERIALIZER.deserializeResponse(results);
+
+        assertEquals(id, deserialized.getRequestId());
+        assertEquals("this", deserialized.getResult().getMeta().get("test"));
+        assertEquals(1, deserialized.getResult().getMeta().get("one"));
+        assertEquals("some-result", deserialized.getResult().getData());
+        assertEquals("that", deserialized.getStatus().getAttributes().get("test"));
+        assertEquals(2, deserialized.getStatus().getAttributes().get("two"));
+        assertEquals(ResponseStatusCode.SUCCESS.getValue(), deserialized.getStatus().getCode().getValue());
+        assertEquals("worked", deserialized.getStatus().getMessage());
+    }
+    
+    @Test
+    public void shouldSerializeToTreeJson() throws Exception {
+        final TinkerGraph graph = TinkerFactory.createClassic();
+        final GraphTraversalSource g = graph.traversal();
+        final Tree t = g.V(1).out().properties("name").tree().next();
+
+        
+        final String results = SERIALIZER.serializeResponseAsString(ResponseMessage.build(msg).result(t).create());
+
+        final JsonNode json = mapper.readTree(results);
+
+        assertNotNull(json);
+        assertEquals(msg.getRequestId().toString(), json.get(SerTokens.TOKEN_REQUEST).asText());
+        final JsonNode converted = json.get(SerTokens.TOKEN_RESULT).get(SerTokens.TOKEN_DATA);
+        assertNotNull(converted);
+
+        //result is: tree{v1=>tree{vp['name'->'vadas']=>null, vp['name'->'lop']=>null, vp['name'->'josh']=>null}}
+        
+        //check the first object and it's properties
+        assertEquals(1, converted.get(GraphSONTokens.VALUEPROP)
+                .get(0)
+                .get(GraphSONTokens.KEY).get(GraphSONTokens.VALUEPROP)
+                .get(GraphSONTokens.ID).get(GraphSONTokens.VALUEPROP).asInt());
+
+        assertEquals("marko", converted.get(GraphSONTokens.VALUEPROP)
+                .get(0)
+                .get(GraphSONTokens.KEY).get(GraphSONTokens.VALUEPROP)
+                .get(GraphSONTokens.PROPERTIES)
+                .get("name")
+                .get(0).get(GraphSONTokens.VALUEPROP)
+                .get(GraphSONTokens.VALUE).asText());
+
+        //check the leafs
+        assertEquals("vadas", converted.get(GraphSONTokens.VALUEPROP)
+                .get(0)
+                .get(GraphSONTokens.VALUE).get(GraphSONTokens.VALUEPROP)
+                .get(0)
+                .get(GraphSONTokens.KEY).get(GraphSONTokens.VALUEPROP)
+                .get(GraphSONTokens.PROPERTIES)
+                .get("name")
+                .get(0).get(GraphSONTokens.VALUEPROP)
+                .get(GraphSONTokens.VALUE).asText());
+
+        assertEquals("lop", converted.get(GraphSONTokens.VALUEPROP)
+                .get(0)
+                .get(GraphSONTokens.VALUE).get(GraphSONTokens.VALUEPROP)
+                .get(1)
+                .get(GraphSONTokens.KEY).get(GraphSONTokens.VALUEPROP)
+                .get(GraphSONTokens.PROPERTIES)
+                .get("name")
+                .get(0).get(GraphSONTokens.VALUEPROP)
+                .get(GraphSONTokens.VALUE).asText());
+
+        assertEquals("josh", converted.get(GraphSONTokens.VALUEPROP)
+                .get(0)
+                .get(GraphSONTokens.VALUE).get(GraphSONTokens.VALUEPROP)
+                .get(2)
+                .get(GraphSONTokens.KEY).get(GraphSONTokens.VALUEPROP)
+                .get(GraphSONTokens.PROPERTIES)
+                .get("name")
+                .get(0).get(GraphSONTokens.VALUEPROP)
+                .get(GraphSONTokens.VALUE).asText());
+    }
+
+    private class FunObject {
+        private String val;
+
+        public FunObject(String val) {
+            this.val = val;
+        }
+
+        public String toString() {
+            return this.val;
+        }
+    }
+
+    public static class ColorIoRegistry extends AbstractIoRegistry {
+        public ColorIoRegistry() {
+            register(GraphSONIo.class, null, new ColorSimpleModule());
+        }
+    }
+
+    public static class ColorSimpleModule extends SimpleModule {
+        public ColorSimpleModule() {
+            super("color-fun");
+            addSerializer(Color.class, new ColorSerializer());
+
+        }
+    }
+
+    public static class ColorSerializer extends StdSerializer<Color> {
+        public ColorSerializer() {
+            super(Color.class);
+        }
+
+        @Override
+        public void serialize(final Color color, final JsonGenerator jsonGenerator,
+                              final SerializerProvider serializerProvider) throws IOException, JsonGenerationException {
+            jsonGenerator.writeBoolean(color.equals(Color.RED));
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-server/conf/gremlin-server-classic.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-classic.yaml b/gremlin-server/conf/gremlin-server-classic.yaml
index 551e2c0..24923ea 100644
--- a/gremlin-server/conf/gremlin-server-classic.yaml
+++ b/gremlin-server/conf/gremlin-server-classic.yaml
@@ -29,7 +29,7 @@ scriptEngines: {
     scripts: [scripts/complex-lifecycle.groovy]}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}       # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}   # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}   # application/vnd.gremlin-v1.0+gryo-stringd
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-server/conf/gremlin-server-min.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-min.yaml b/gremlin-server/conf/gremlin-server-min.yaml
index d4471f5..f3e9ddd 100644
--- a/gremlin-server/conf/gremlin-server-min.yaml
+++ b/gremlin-server/conf/gremlin-server-min.yaml
@@ -27,6 +27,7 @@ scriptEngines: {
     imports: []}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }}  # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph }}  # application/vnd.gremlin-v2.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}         # application/json
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-server/conf/gremlin-server-neo4j.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-neo4j.yaml b/gremlin-server/conf/gremlin-server-neo4j.yaml
index 8b4f768..7c1544b 100644
--- a/gremlin-server/conf/gremlin-server-neo4j.yaml
+++ b/gremlin-server/conf/gremlin-server-neo4j.yaml
@@ -46,6 +46,7 @@ serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v2.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
 processors:
   - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-server/conf/gremlin-server-rest-modern.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-rest-modern.yaml b/gremlin-server/conf/gremlin-server-rest-modern.yaml
index a900204..0fdcb69 100644
--- a/gremlin-server/conf/gremlin-server-rest-modern.yaml
+++ b/gremlin-server/conf/gremlin-server-rest-modern.yaml
@@ -30,6 +30,7 @@ scriptEngines: {
     scripts: [scripts/generate-modern.groovy]}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }}  # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph }}  # application/vnd.gremlin-v2.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}         # application/json
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-server/conf/gremlin-server-rest-secure.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-rest-secure.yaml b/gremlin-server/conf/gremlin-server-rest-secure.yaml
index d017aa4..84c21d7 100644
--- a/gremlin-server/conf/gremlin-server-rest-secure.yaml
+++ b/gremlin-server/conf/gremlin-server-rest-secure.yaml
@@ -43,6 +43,7 @@ scriptEngines: {
               "org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.CompileStaticCustomizerProvider":["org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.SimpleSandboxExtension"]}}}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v2.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
 processors:
   - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}


[16/19] tinkerpop git commit: TINKERPOP-1274: GraphSON 2.0.

Posted by sp...@apache.org.
TINKERPOP-1274: GraphSON 2.0.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/115eb3c7
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/115eb3c7
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/115eb3c7

Branch: refs/heads/master
Commit: 115eb3c779d993b5cc668bf2c30b31a9b031de49
Parents: 848e367
Author: Kevin Gallardo <ga...@gmail.com>
Authored: Wed May 18 08:41:26 2016 -0400
Committer: Kevin Gallardo <ke...@datastax.com>
Committed: Sat Aug 20 13:52:27 2016 +0100

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |   2 +
 data/grateful-dead-typed.json                   | 422 +++++-----
 data/grateful-dead-v2d0-typed.json              | 808 +++++++++++++++++++
 data/grateful-dead-v2d0.json                    | 808 +++++++++++++++++++
 data/grateful-dead.json                         | 422 +++++-----
 data/tinkerpop-classic-v2d0-typed.json          |   6 +
 data/tinkerpop-classic-v2d0.json                |   6 +
 data/tinkerpop-crew-v2d0-typed.json             |   6 +
 data/tinkerpop-crew-v2d0.json                   |   6 +
 data/tinkerpop-modern-v2d0-typed.json           |   6 +
 data/tinkerpop-modern-v2d0.json                 |   6 +
 docs/src/reference/the-graph.asciidoc           | 139 +++-
 .../upgrade/release-3.2.x-incubating.asciidoc   |  20 +
 .../traversal/util/DefaultTraversalMetrics.java |   8 +
 .../process/traversal/util/MutableMetrics.java  |  12 +
 .../structure/io/graphson/GraphSONMapper.java   | 167 +++-
 .../structure/io/graphson/GraphSONModule.java   | 232 +++++-
 .../structure/io/graphson/GraphSONReader.java   |   8 +-
 .../io/graphson/GraphSONSerializerProvider.java |  15 +-
 .../io/graphson/GraphSONSerializers.java        | 465 -----------
 .../io/graphson/GraphSONSerializersV1d0.java    | 465 +++++++++++
 .../io/graphson/GraphSONSerializersV2d0.java    | 580 +++++++++++++
 .../structure/io/graphson/GraphSONTokens.java   |   3 +
 .../io/graphson/GraphSONTypeDeserializer.java   | 229 ++++++
 .../io/graphson/GraphSONTypeIdResolver.java     | 108 +++
 .../graphson/GraphSONTypeResolverBuilder.java   |  65 ++
 .../io/graphson/GraphSONTypeSerializer.java     | 197 +++++
 .../structure/io/graphson/GraphSONUtil.java     |  37 +
 .../structure/io/graphson/GraphSONVersion.java  |   3 +-
 .../structure/io/graphson/GraphSONWriter.java   |  11 +-
 .../io/graphson/JavaTimeSerializers.java        | 326 --------
 .../io/graphson/JavaTimeSerializersV1d0.java    | 326 ++++++++
 .../io/graphson/JavaTimeSerializersV2d0.java    | 323 ++++++++
 .../io/graphson/JavaUtilSerializers.java        |  86 --
 .../io/graphson/JavaUtilSerializersV1d0.java    |  86 ++
 .../io/graphson/JavaUtilSerializersV2d0.java    |  87 ++
 .../structure/io/graphson/JsonParserConcat.java |  83 ++
 .../io/graphson/LegacyGraphSONReader.java       |   4 +-
 .../io/graphson/TinkerPopJacksonModule.java     |  48 ++
 .../io/graphson/ToStringGraphSONSerializer.java |  41 +
 .../gremlin/structure/io/graphson/TypeInfo.java |  29 +
 .../structure/util/detached/DetachedEdge.java   |  11 +-
 .../structure/util/detached/DetachedVertex.java |  10 +-
 .../util/star/DirectionalStarGraph.java         |  39 +
 .../star/StarGraphGraphSONDeserializer.java     |  91 +++
 .../util/star/StarGraphGraphSONSerializer.java  | 250 ------
 .../star/StarGraphGraphSONSerializerV1d0.java   | 178 ++++
 .../star/StarGraphGraphSONSerializerV2d0.java   | 165 ++++
 .../GraphSONMapperEmbeddedTypeTest.java         |  55 +-
 .../io/graphson/GraphSONMapperTest.java         |  17 +-
 ...aphSONMapperV2d0PartialEmbeddedTypeTest.java | 344 ++++++++
 .../AbstractGraphSONMessageSerializerV2d0.java  | 248 ++++++
 .../GraphSONMessageSerializerGremlinV2d0.java   |  69 ++
 .../ser/GraphSONMessageSerializerV2d0.java      | 125 +++
 .../tinkerpop/gremlin/driver/ser/SerTokens.java |   1 +
 ...raphSONMessageSerializerGremlinTestV1d0.java | 334 ++++++++
 ...raphSONMessageSerializerGremlinTestV2d0.java | 341 ++++++++
 ...raphSONMessageSerializerGremlinV1d0Test.java | 334 --------
 .../ser/GraphSONMessageSerializerV1d0Test.java  |   9 +-
 .../ser/GraphSONMessageSerializerV2d0Test.java  | 507 ++++++++++++
 gremlin-server/conf/gremlin-server-classic.yaml |   2 +-
 gremlin-server/conf/gremlin-server-min.yaml     |   1 +
 gremlin-server/conf/gremlin-server-neo4j.yaml   |   1 +
 .../conf/gremlin-server-rest-modern.yaml        |   1 +
 .../conf/gremlin-server-rest-secure.yaml        |   1 +
 gremlin-server/conf/gremlin-server-secure.yaml  |   1 +
 gremlin-server/conf/gremlin-server-spark.yaml   |   1 +
 gremlin-server/conf/gremlin-server.yaml         |   1 +
 gremlin-server/data/sample.kryo                 | Bin 2416053 -> 2436147 bytes
 .../server/GremlinServerHttpIntegrateTest.java  |  22 +
 .../remote/gremlin-server-integration.yaml      |   1 +
 .../server/gremlin-server-integration.yaml      |   1 +
 .../io/graphson/grateful-dead-typed.json        | 422 +++++-----
 .../io/graphson/grateful-dead-v2d0-typed.json   | 808 +++++++++++++++++++
 .../io/graphson/grateful-dead-v2d0.json         | 808 +++++++++++++++++++
 .../structure/io/graphson/grateful-dead.json    | 422 +++++-----
 .../tinkerpop-classic-normalized-v2d0.json      |   6 +
 .../graphson/tinkerpop-classic-v2d0-typed.json  |   6 +
 .../io/graphson/tinkerpop-classic-v2d0.json     |   6 +
 .../io/graphson/tinkerpop-crew-v2d0-typed.json  |   6 +
 .../io/graphson/tinkerpop-crew-v2d0.json        |   6 +
 .../tinkerpop-modern-normalized-v2d0.json       |   6 +
 .../graphson/tinkerpop-modern-v2d0-typed.json   |   6 +
 .../io/graphson/tinkerpop-modern-v2d0.json      |   6 +
 tinkergraph-gremlin/pom.xml                     |   4 +-
 .../structure/TinkerIoRegistryV2d0.java         | 213 +++++
 .../structure/IoDataGenerationTest.java         | 115 ++-
 .../TinkerGraphGraphSONSerializerV2d0Test.java  | 557 +++++++++++++
 88 files changed, 10842 insertions(+), 2417 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index d4eff5d..f4515b7 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,8 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 TinkerPop 3.2.2 (NOT OFFICIALLY RELEASED YET)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+* Introduced GraphSON 2.0.
+* Deprecated `embedTypes` on the builder for `GraphSONMapper`.
 * Defaulted the `gremlinPool` setting in Gremlin Server to be zero, which will instructs it to use `Runtime.availableProcessors()` for that settings.
 * Changed scope of log4j dependencies so that they would only be used in tests and the binary distributions of Gremlin Console and Server.
 * Deprecated `Io.Builder.registry()` in favor of the newly introduced `Io.Builder.onMapper()`.


[08/19] tinkerpop git commit: TINKERPOP-1274: GraphSON 2.0.

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TinkerPopJacksonModule.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TinkerPopJacksonModule.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TinkerPopJacksonModule.java
new file mode 100644
index 0000000..847027c
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TinkerPopJacksonModule.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.graphson;
+
+import org.apache.tinkerpop.shaded.jackson.databind.module.SimpleModule;
+
+import java.util.Map;
+
+/**
+ * A {@link SimpleModule} extension that does the necessary work to make the automatic typed deserialization
+ * without full canonical class names work.
+ *
+ * Users of custom modules with the GraphSONMapper that want their objects to be deserialized automatically by the
+ * mapper, must extend this class with their module. It is the only required step.
+ *
+ * Using this basis module allows the serialization and deserialization of typed objects without having the whole
+ * canonical name of the serialized classes included in the Json payload. This is also necessary because Java
+ * does not provide an agnostic way to search in a classpath a find a class by its simple name. Although that could
+ * be done with an external library, later if we deem it necessary.
+ *
+ * @author Kevin Gallardo (https://kgdo.me)
+ */
+public abstract class TinkerPopJacksonModule extends SimpleModule {
+
+    public TinkerPopJacksonModule(String name) {
+        super(name);
+    }
+
+    public abstract Map<Class, String> getTypeDefinitions();
+
+    public abstract String getTypeNamespace();
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/ToStringGraphSONSerializer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/ToStringGraphSONSerializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/ToStringGraphSONSerializer.java
new file mode 100644
index 0000000..fbd9e00
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/ToStringGraphSONSerializer.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.graphson;
+
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
+import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.ToStringSerializer;
+
+import java.io.IOException;
+
+/**
+ * A different implementation of the {@link ToStringSerializer} that does not serialize types by calling
+ * `typeSerializer.writeTypePrefixForScalar()` for unknown objects, because it doesn't make sense when there is a
+ * custom types mechanism in place.
+ *
+ * @author Kevin Gallardo (https://kgdo.me)
+ */
+public class ToStringGraphSONSerializer extends ToStringSerializer {
+    @Override
+    public void serializeWithType(Object value, JsonGenerator gen, SerializerProvider provider, TypeSerializer typeSer) throws IOException {
+        this.serialize(value, gen, provider);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TypeInfo.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TypeInfo.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TypeInfo.java
new file mode 100644
index 0000000..34e0d2b
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TypeInfo.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.graphson;
+
+/**
+ * Defines how data types are handled in GraphSON through the {@link GraphSONMapper}.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public enum TypeInfo {
+    NO_TYPES,
+    PARTIAL_TYPES
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedEdge.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedEdge.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedEdge.java
index 776d313..ba05cca 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedEdge.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedEdge.java
@@ -79,12 +79,17 @@ public class DetachedEdge extends DetachedElement<Edge> implements Edge {
         super(id, label);
         this.outVertex = new DetachedVertex(outV.getValue0(), outV.getValue1(), Collections.emptyMap());
         this.inVertex = new DetachedVertex(inV.getValue0(), inV.getValue1(), Collections.emptyMap());
-        if (!properties.isEmpty()) {
+        if (properties != null && !properties.isEmpty()) {
             this.properties = new HashMap<>();
-            properties.entrySet().stream().forEach(entry -> this.properties.put(entry.getKey(), Collections.singletonList(new DetachedProperty<>(entry.getKey(), entry.getValue(), this))));
+            properties.entrySet().stream().forEach(entry -> {
+                if (Property.class.isAssignableFrom(entry.getValue().getClass())) {
+                    this.properties.put(entry.getKey(), Collections.singletonList((Property)entry.getValue()));
+                } else {
+                    this.properties.put(entry.getKey(), Collections.singletonList(new DetachedProperty<>(entry.getKey(), entry.getValue(), this)));
+                }
+            });
         }
     }
-
     @Override
     public String toString() {
         return StringFactory.edgeString(this);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertex.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertex.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertex.java
index 371c091..70cce37 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertex.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertex.java
@@ -76,12 +76,14 @@ public class DetachedVertex extends DetachedElement<Vertex> implements Vertex {
 
     public DetachedVertex(final Object id, final String label, final Map<String, Object> properties) {
         super(id, label);
-        if (!properties.isEmpty()) {
+        if (properties != null && !properties.isEmpty()) {
             this.properties = new HashMap<>();
             properties.entrySet().stream().forEach(
-                    entry -> this.properties.put(entry.getKey(), ((List<Map<String, Object>>) entry.getValue()).stream()
-                            .map(m -> new DetachedVertexProperty<>(m.get(ID), entry.getKey(), m.get(VALUE), (Map<String, Object>) m.getOrDefault(PROPERTIES, new HashMap<>()), this))
-                            .collect(Collectors.toList())));
+                    entry -> this.properties.put(entry.getKey(), (List<VertexProperty>) ((List) entry.getValue()).stream()
+                                .map(m -> VertexProperty.class.isAssignableFrom(m.getClass())
+                                                ? m
+                                                : new DetachedVertexProperty<>(((Map) m).get(ID), entry.getKey(), ((Map) m).get(VALUE), (Map<String, Object>) ((Map) m).getOrDefault(PROPERTIES, new HashMap<>()), this))
+                                .collect(Collectors.toList())));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/DirectionalStarGraph.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/DirectionalStarGraph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/DirectionalStarGraph.java
new file mode 100644
index 0000000..ed7b58c
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/DirectionalStarGraph.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.util.star;
+
+import org.apache.tinkerpop.gremlin.structure.Direction;
+
+public class DirectionalStarGraph {
+    private final Direction direction;
+    private final StarGraph starGraphToSerialize;
+
+    public DirectionalStarGraph(final StarGraph starGraphToSerialize, final Direction direction) {
+        this.direction = direction;
+        this.starGraphToSerialize = starGraphToSerialize;
+    }
+
+    public Direction getDirection() {
+        return direction;
+    }
+
+    public StarGraph getStarGraphToSerialize() {
+        return starGraphToSerialize;
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGraphSONDeserializer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGraphSONDeserializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGraphSONDeserializer.java
new file mode 100644
index 0000000..84a3fd4
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGraphSONDeserializer.java
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.util.star;
+
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.T;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens;
+import org.apache.tinkerpop.gremlin.structure.util.Attachable;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+
+/**
+ * Provides helper functions for reading vertex and edges from their serialized GraphSON forms.
+ */
+public class StarGraphGraphSONDeserializer {
+
+    /**
+     * A helper function for reading vertex edges from a serialized {@link org.apache.tinkerpop.gremlin.structure.util.star.StarGraph} (i.e. a {@link java.util.Map}) generated by
+     * {@link org.apache.tinkerpop.gremlin.structure.util.star.StarGraphGraphSONSerializerV1d0}.
+     */
+    public static void readStarGraphEdges(final Function<Attachable<Edge>, Edge> edgeMaker,
+                                          final StarGraph starGraph,
+                                          final Map<String, Object> vertexData,
+                                          final String direction) throws IOException {
+        final Map<String, List<Map<String,Object>>> edgeDatas = (Map<String, List<Map<String,Object>>>) vertexData.get(direction);
+        for (Map.Entry<String, List<Map<String,Object>>> edgeData : edgeDatas.entrySet()) {
+            for (Map<String,Object> inner : edgeData.getValue()) {
+                final StarGraph.StarEdge starEdge;
+                if (direction.equals(GraphSONTokens.OUT_E))
+                    starEdge = (StarGraph.StarEdge) starGraph.getStarVertex().addOutEdge(edgeData.getKey(), starGraph.addVertex(T.id, inner.get(GraphSONTokens.IN)), T.id, inner.get(GraphSONTokens.ID));
+                else
+                    starEdge = (StarGraph.StarEdge) starGraph.getStarVertex().addInEdge(edgeData.getKey(), starGraph.addVertex(T.id, inner.get(GraphSONTokens.OUT)), T.id, inner.get(GraphSONTokens.ID));
+
+                if (inner.containsKey(GraphSONTokens.PROPERTIES)) {
+                    final Map<String, Object> edgePropertyData = (Map<String, Object>) inner.get(GraphSONTokens.PROPERTIES);
+                    for (Map.Entry<String, Object> epd : edgePropertyData.entrySet()) {
+                        starEdge.property(epd.getKey(), epd.getValue());
+                    }
+                }
+
+                if (edgeMaker != null) edgeMaker.apply(starEdge);
+            }
+        }
+    }
+
+    /**
+     * A helper function for reading a serialized {@link org.apache.tinkerpop.gremlin.structure.util.star.StarGraph} from a {@link java.util.Map} generated by
+     * {@link org.apache.tinkerpop.gremlin.structure.util.star.StarGraphGraphSONSerializerV1d0}.
+     */
+    public static StarGraph readStarGraphVertex(final Map<String, Object> vertexData) throws IOException {
+        final StarGraph starGraph = StarGraph.open();
+        starGraph.addVertex(T.id, vertexData.get(GraphSONTokens.ID), T.label, vertexData.get(GraphSONTokens.LABEL));
+        if (vertexData.containsKey(GraphSONTokens.PROPERTIES)) {
+            final Map<String, List<Map<String, Object>>> properties = (Map<String, List<Map<String, Object>>>) vertexData.get(GraphSONTokens.PROPERTIES);
+            for (Map.Entry<String, List<Map<String, Object>>> property : properties.entrySet()) {
+                for (Map<String, Object> p : property.getValue()) {
+                    final StarGraph.StarVertexProperty vp = (StarGraph.StarVertexProperty) starGraph.getStarVertex().property(VertexProperty.Cardinality.list, property.getKey(), p.get(GraphSONTokens.VALUE), T.id, p.get(GraphSONTokens.ID));
+                    if (p.containsKey(GraphSONTokens.PROPERTIES)) {
+                        final Map<String, Object> edgePropertyData = (Map<String, Object>) p.get(GraphSONTokens.PROPERTIES);
+                        for (Map.Entry<String, Object> epd : edgePropertyData.entrySet()) {
+                            vp.property(epd.getKey(), epd.getValue());
+                        }
+                    }
+                }
+            }
+        }
+
+        return starGraph;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGraphSONSerializer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGraphSONSerializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGraphSONSerializer.java
deleted file mode 100644
index 3d1a16a..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGraphSONSerializer.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.structure.util.star;
-
-import org.apache.tinkerpop.gremlin.structure.Direction;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.T;
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens;
-import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONUtil;
-import org.apache.tinkerpop.gremlin.structure.util.Attachable;
-import org.apache.tinkerpop.gremlin.structure.util.Comparators;
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
-import org.apache.tinkerpop.shaded.jackson.core.JsonGenerationException;
-import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
-import org.apache.tinkerpop.shaded.jackson.core.JsonProcessingException;
-import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
-import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
-import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-import java.util.function.Function;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class StarGraphGraphSONSerializer extends StdSerializer<StarGraphGraphSONSerializer.DirectionalStarGraph> {
-    private final boolean normalize;
-    public StarGraphGraphSONSerializer(final boolean normalize) {
-        super(DirectionalStarGraph.class);
-        this.normalize = normalize;
-    }
-
-    @Override
-    public void serialize(final DirectionalStarGraph starGraph, final JsonGenerator jsonGenerator,
-                          final SerializerProvider serializerProvider) throws IOException, JsonGenerationException {
-        ser(starGraph, jsonGenerator, serializerProvider, null);
-    }
-
-    @Override
-    public void serializeWithType(final DirectionalStarGraph starGraph, final JsonGenerator jsonGenerator,
-                                  final SerializerProvider serializerProvider,
-                                  final TypeSerializer typeSerializer) throws IOException, JsonProcessingException {
-        ser(starGraph, jsonGenerator, serializerProvider, typeSerializer);
-    }
-
-    private void ser(final DirectionalStarGraph directionalStarGraph, final JsonGenerator jsonGenerator,
-                     final SerializerProvider serializerProvider,
-                     final TypeSerializer typeSerializer) throws IOException, JsonProcessingException {
-        final StarGraph starGraph = directionalStarGraph.getStarGraphToSerialize();
-        jsonGenerator.writeStartObject();
-        if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-        GraphSONUtil.writeWithType(GraphSONTokens.ID, starGraph.starVertex.id, jsonGenerator, serializerProvider, typeSerializer);
-        jsonGenerator.writeStringField(GraphSONTokens.LABEL, starGraph.starVertex.label);
-        if (directionalStarGraph.direction != null) writeEdges(directionalStarGraph, jsonGenerator, serializerProvider, typeSerializer, Direction.IN);
-        if (directionalStarGraph.direction != null) writeEdges(directionalStarGraph, jsonGenerator, serializerProvider, typeSerializer, Direction.OUT);
-        if (starGraph.starVertex.vertexProperties != null && !starGraph.starVertex.vertexProperties.isEmpty()) {
-            jsonGenerator.writeObjectFieldStart(GraphSONTokens.PROPERTIES);
-            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-            final Set<String> keys = normalize ? new TreeSet<>(starGraph.starVertex.vertexProperties.keySet()) : starGraph.starVertex.vertexProperties.keySet();
-            for (final String k : keys) {
-                final List<VertexProperty> vp = starGraph.starVertex.vertexProperties.get(k);
-                jsonGenerator.writeArrayFieldStart(k);
-                if (typeSerializer != null) {
-                    jsonGenerator.writeString(ArrayList.class.getName());
-                    jsonGenerator.writeStartArray();
-                }
-
-                final List<VertexProperty> vertexProperties = normalize ?sort(vp, Comparators.PROPERTY_COMPARATOR) : vp;
-                for (final VertexProperty property : vertexProperties) {
-                    jsonGenerator.writeStartObject();
-                    if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-                    GraphSONUtil.writeWithType(GraphSONTokens.ID, property.id(), jsonGenerator, serializerProvider, typeSerializer);
-                    GraphSONUtil.writeWithType(GraphSONTokens.VALUE, property.value(), jsonGenerator, serializerProvider, typeSerializer);
-
-                    final Iterator<Property> metaProperties = normalize ?
-                            IteratorUtils.list(property.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : property.properties();
-                    if (metaProperties.hasNext()) {
-                        jsonGenerator.writeObjectFieldStart(GraphSONTokens.PROPERTIES);
-                        if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-                        while (metaProperties.hasNext()) {
-                            final Property<Object> meta = metaProperties.next();
-                            GraphSONUtil.writeWithType(meta.key(), meta.value(), jsonGenerator, serializerProvider, typeSerializer);
-                        }
-                        jsonGenerator.writeEndObject();
-                    }
-                    jsonGenerator.writeEndObject();
-                }
-                jsonGenerator.writeEndArray();
-                if (typeSerializer != null) jsonGenerator.writeEndArray();
-            }
-            jsonGenerator.writeEndObject();
-        }
-    }
-
-    private void writeEdges(final DirectionalStarGraph directionalStarGraph, final JsonGenerator jsonGenerator,
-                            final SerializerProvider serializerProvider,
-                            final TypeSerializer typeSerializer,
-                            final Direction direction)  throws IOException, JsonProcessingException {
-        // only write edges if there are some AND if the user requested them to be serialized AND if they match
-        // the direction being serialized by the format
-        final StarGraph starGraph = directionalStarGraph.getStarGraphToSerialize();
-        final Direction edgeDirectionToSerialize = directionalStarGraph.getDirection();
-        final Map<String, List<Edge>> starEdges = direction.equals(Direction.OUT) ? starGraph.starVertex.outEdges : starGraph.starVertex.inEdges;
-        final boolean writeEdges = null != starEdges && edgeDirectionToSerialize != null
-                && (edgeDirectionToSerialize == direction || edgeDirectionToSerialize == Direction.BOTH);
-        if (writeEdges) {
-            jsonGenerator.writeObjectFieldStart(direction == Direction.IN ? GraphSONTokens.IN_E : GraphSONTokens.OUT_E);
-            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-            final Set<String> keys = normalize ? new TreeSet<>(starEdges.keySet()) : starEdges.keySet();
-            for (final String k : keys) {
-                final List<Edge> edges = starEdges.get(k);
-                jsonGenerator.writeArrayFieldStart(k);
-                if (typeSerializer != null) {
-                    jsonGenerator.writeString(ArrayList.class.getName());
-                    jsonGenerator.writeStartArray();
-                }
-
-                final List<Edge> edgesToWrite = normalize ? sort(edges, Comparators.EDGE_COMPARATOR) : edges;
-                for (final Edge edge : edgesToWrite) {
-                    jsonGenerator.writeStartObject();
-                    if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-                    GraphSONUtil.writeWithType(GraphSONTokens.ID, edge.id(), jsonGenerator, serializerProvider, typeSerializer);
-                    GraphSONUtil.writeWithType(direction.equals(Direction.OUT) ? GraphSONTokens.IN : GraphSONTokens.OUT,
-                            direction.equals(Direction.OUT) ? edge.inVertex().id() : edge.outVertex().id(),
-                            jsonGenerator, serializerProvider, typeSerializer);
-
-                    final Iterator<Property<Object>> edgeProperties = normalize ?
-                            IteratorUtils.list(edge.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : edge.properties();
-                    if (edgeProperties.hasNext()) {
-                        jsonGenerator.writeObjectFieldStart(GraphSONTokens.PROPERTIES);
-                        if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-                        while (edgeProperties.hasNext()) {
-                            final Property<Object> meta = edgeProperties.next();
-                            GraphSONUtil.writeWithType(meta.key(), meta.value(), jsonGenerator, serializerProvider, typeSerializer);
-                        }
-                        jsonGenerator.writeEndObject();
-                    }
-                    jsonGenerator.writeEndObject();
-                }
-                jsonGenerator.writeEndArray();
-                if (typeSerializer != null) jsonGenerator.writeEndArray();
-            }
-            jsonGenerator.writeEndObject();
-        }
-    }
-
-    /**
-     * A helper function for reading vertex edges from a serialized {@link StarGraph} (i.e. a {@link Map}) generated by
-     * {@link StarGraphGraphSONSerializer}.
-     */
-    public static void readStarGraphEdges(final Function<Attachable<Edge>, Edge> edgeMaker,
-                                          final StarGraph starGraph,
-                                          final Map<String, Object> vertexData,
-                                          final String direction) throws IOException {
-        final Map<String, List<Map<String,Object>>> edgeDatas = (Map<String, List<Map<String,Object>>>) vertexData.get(direction);
-        for (Map.Entry<String, List<Map<String,Object>>> edgeData : edgeDatas.entrySet()) {
-            for (Map<String,Object> inner : edgeData.getValue()) {
-                final StarGraph.StarEdge starEdge;
-                if (direction.equals(GraphSONTokens.OUT_E))
-                    starEdge = (StarGraph.StarEdge) starGraph.getStarVertex().addOutEdge(edgeData.getKey(), starGraph.addVertex(T.id, inner.get(GraphSONTokens.IN)), T.id, inner.get(GraphSONTokens.ID));
-                else
-                    starEdge = (StarGraph.StarEdge) starGraph.getStarVertex().addInEdge(edgeData.getKey(), starGraph.addVertex(T.id, inner.get(GraphSONTokens.OUT)), T.id, inner.get(GraphSONTokens.ID));
-
-                if (inner.containsKey(GraphSONTokens.PROPERTIES)) {
-                    final Map<String, Object> edgePropertyData = (Map<String, Object>) inner.get(GraphSONTokens.PROPERTIES);
-                    for (Map.Entry<String, Object> epd : edgePropertyData.entrySet()) {
-                        starEdge.property(epd.getKey(), epd.getValue());
-                    }
-                }
-
-                if (edgeMaker != null) edgeMaker.apply(starEdge);
-            }
-        }
-    }
-
-    /**
-     * A helper function for reading a serialized {@link StarGraph} from a {@link Map} generated by
-     * {@link StarGraphGraphSONSerializer}.
-     */
-    public static StarGraph readStarGraphVertex(final Map<String, Object> vertexData) throws IOException {
-        final StarGraph starGraph = StarGraph.open();
-        starGraph.addVertex(T.id, vertexData.get(GraphSONTokens.ID), T.label, vertexData.get(GraphSONTokens.LABEL));
-        if (vertexData.containsKey(GraphSONTokens.PROPERTIES)) {
-            final Map<String, List<Map<String, Object>>> properties = (Map<String, List<Map<String, Object>>>) vertexData.get(GraphSONTokens.PROPERTIES);
-            for (Map.Entry<String, List<Map<String, Object>>> property : properties.entrySet()) {
-                for (Map<String, Object> p : property.getValue()) {
-                    final StarGraph.StarVertexProperty vp = (StarGraph.StarVertexProperty) starGraph.getStarVertex().property(VertexProperty.Cardinality.list, property.getKey(), p.get(GraphSONTokens.VALUE), T.id, p.get(GraphSONTokens.ID));
-                    if (p.containsKey(GraphSONTokens.PROPERTIES)) {
-                        final Map<String, Object> edgePropertyData = (Map<String, Object>) p.get(GraphSONTokens.PROPERTIES);
-                        for (Map.Entry<String, Object> epd : edgePropertyData.entrySet()) {
-                            vp.property(epd.getKey(), epd.getValue());
-                        }
-                    }
-                }
-            }
-        }
-
-        return starGraph;
-    }
-
-    private static <S> List<S> sort(final List<S> listToSort, final Comparator comparator) {
-        Collections.sort(listToSort, comparator);
-        return listToSort;
-    }
-
-    public static class DirectionalStarGraph {
-        private final Direction direction;
-        private final StarGraph starGraphToSerialize;
-
-        public DirectionalStarGraph(final StarGraph starGraphToSerialize, final Direction direction) {
-            this.direction = direction;
-            this.starGraphToSerialize = starGraphToSerialize;
-        }
-
-        public Direction getDirection() {
-            return direction;
-        }
-
-        public StarGraph getStarGraphToSerialize() {
-            return starGraphToSerialize;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGraphSONSerializerV1d0.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGraphSONSerializerV1d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGraphSONSerializerV1d0.java
new file mode 100644
index 0000000..01cb6d6
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGraphSONSerializerV1d0.java
@@ -0,0 +1,178 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.util.star;
+
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONUtil;
+import org.apache.tinkerpop.gremlin.structure.util.Comparators;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerationException;
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
+import org.apache.tinkerpop.shaded.jackson.core.JsonProcessingException;
+import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class StarGraphGraphSONSerializerV1d0 extends StdSerializer<DirectionalStarGraph> {
+    private final boolean normalize;
+    public StarGraphGraphSONSerializerV1d0(final boolean normalize) {
+        super(DirectionalStarGraph.class);
+        this.normalize = normalize;
+    }
+
+    @Override
+    public void serialize(final DirectionalStarGraph starGraph, final JsonGenerator jsonGenerator,
+                          final SerializerProvider serializerProvider) throws IOException, JsonGenerationException {
+        ser(starGraph, jsonGenerator, serializerProvider, null);
+    }
+
+    @Override
+    public void serializeWithType(final DirectionalStarGraph starGraph, final JsonGenerator jsonGenerator,
+                                  final SerializerProvider serializerProvider,
+                                  final TypeSerializer typeSerializer) throws IOException, JsonProcessingException {
+        ser(starGraph, jsonGenerator, serializerProvider, typeSerializer);
+    }
+
+    private void ser(final DirectionalStarGraph directionalStarGraph, final JsonGenerator jsonGenerator,
+                     final SerializerProvider serializerProvider,
+                     final TypeSerializer typeSerializer) throws IOException, JsonProcessingException {
+        final StarGraph starGraph = directionalStarGraph.getStarGraphToSerialize();
+        jsonGenerator.writeStartObject();
+        if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+        GraphSONUtil.writeWithType(GraphSONTokens.ID, starGraph.starVertex.id, jsonGenerator, serializerProvider, typeSerializer);
+        jsonGenerator.writeStringField(GraphSONTokens.LABEL, starGraph.starVertex.label);
+        if (directionalStarGraph.getDirection() != null) writeEdges(directionalStarGraph, jsonGenerator, serializerProvider, typeSerializer, Direction.IN);
+        if (directionalStarGraph.getDirection() != null) writeEdges(directionalStarGraph, jsonGenerator, serializerProvider, typeSerializer, Direction.OUT);
+        if (starGraph.starVertex.vertexProperties != null && !starGraph.starVertex.vertexProperties.isEmpty()) {
+            jsonGenerator.writeObjectFieldStart(GraphSONTokens.PROPERTIES);
+            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+            final Set<String> keys = normalize ? new TreeSet<>(starGraph.starVertex.vertexProperties.keySet()) : starGraph.starVertex.vertexProperties.keySet();
+            for (final String k : keys) {
+                final List<VertexProperty> vp = starGraph.starVertex.vertexProperties.get(k);
+                jsonGenerator.writeArrayFieldStart(k);
+                if (typeSerializer != null) {
+                    jsonGenerator.writeString(ArrayList.class.getName());
+                    jsonGenerator.writeStartArray();
+                }
+
+                final List<VertexProperty> vertexProperties = normalize ? sort(vp, Comparators.PROPERTY_COMPARATOR) : vp;
+                for (final VertexProperty property : vertexProperties) {
+                    jsonGenerator.writeStartObject();
+                    if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+                    GraphSONUtil.writeWithType(GraphSONTokens.ID, property.id(), jsonGenerator, serializerProvider, typeSerializer);
+                    GraphSONUtil.writeWithType(GraphSONTokens.VALUE, property.value(), jsonGenerator, serializerProvider, typeSerializer);
+
+                    final Iterator<Property> metaProperties = normalize ?
+                            IteratorUtils.list(property.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : property.properties();
+                    if (metaProperties.hasNext()) {
+                        jsonGenerator.writeObjectFieldStart(GraphSONTokens.PROPERTIES);
+                        if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+                        while (metaProperties.hasNext()) {
+                            final Property<Object> meta = metaProperties.next();
+                            GraphSONUtil.writeWithType(meta.key(), meta.value(), jsonGenerator, serializerProvider, typeSerializer);
+                        }
+                        jsonGenerator.writeEndObject();
+                    }
+                    jsonGenerator.writeEndObject();
+                }
+                jsonGenerator.writeEndArray();
+                if (typeSerializer != null) jsonGenerator.writeEndArray();
+            }
+            jsonGenerator.writeEndObject();
+        }
+        // For some reason, this wasn't closed.
+        jsonGenerator.writeEndObject();
+    }
+
+    private void writeEdges(final DirectionalStarGraph directionalStarGraph, final JsonGenerator jsonGenerator,
+                            final SerializerProvider serializerProvider,
+                            final TypeSerializer typeSerializer,
+                            final Direction direction)  throws IOException, JsonProcessingException {
+        // only write edges if there are some AND if the user requested them to be serialized AND if they match
+        // the direction being serialized by the format
+        final StarGraph starGraph = directionalStarGraph.getStarGraphToSerialize();
+        final Direction edgeDirectionToSerialize = directionalStarGraph.getDirection();
+        final Map<String, List<Edge>> starEdges = direction.equals(Direction.OUT) ? starGraph.starVertex.outEdges : starGraph.starVertex.inEdges;
+        final boolean writeEdges = null != starEdges && edgeDirectionToSerialize != null
+                && (edgeDirectionToSerialize == direction || edgeDirectionToSerialize == Direction.BOTH);
+        if (writeEdges) {
+            jsonGenerator.writeObjectFieldStart(direction == Direction.IN ? GraphSONTokens.IN_E : GraphSONTokens.OUT_E);
+            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+            final Set<String> keys = normalize ? new TreeSet<>(starEdges.keySet()) : starEdges.keySet();
+            for (final String k : keys) {
+                final List<Edge> edges = starEdges.get(k);
+                jsonGenerator.writeArrayFieldStart(k);
+                if (typeSerializer != null) {
+                    jsonGenerator.writeString(ArrayList.class.getName());
+                    jsonGenerator.writeStartArray();
+                }
+
+                final List<Edge> edgesToWrite = normalize ? sort(edges, Comparators.EDGE_COMPARATOR) : edges;
+                for (final Edge edge : edgesToWrite) {
+                    jsonGenerator.writeStartObject();
+                    if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+                    GraphSONUtil.writeWithType(GraphSONTokens.ID, edge.id(), jsonGenerator, serializerProvider, typeSerializer);
+                    GraphSONUtil.writeWithType(direction.equals(Direction.OUT) ? GraphSONTokens.IN : GraphSONTokens.OUT,
+                            direction.equals(Direction.OUT) ? edge.inVertex().id() : edge.outVertex().id(),
+                            jsonGenerator, serializerProvider, typeSerializer);
+
+                    final Iterator<Property<Object>> edgeProperties = normalize ?
+                            IteratorUtils.list(edge.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : edge.properties();
+                    if (edgeProperties.hasNext()) {
+                        jsonGenerator.writeObjectFieldStart(GraphSONTokens.PROPERTIES);
+                        if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+                        while (edgeProperties.hasNext()) {
+                            final Property<Object> meta = edgeProperties.next();
+                            GraphSONUtil.writeWithType(meta.key(), meta.value(), jsonGenerator, serializerProvider, typeSerializer);
+                        }
+                        jsonGenerator.writeEndObject();
+                    }
+                    jsonGenerator.writeEndObject();
+                }
+                jsonGenerator.writeEndArray();
+                if (typeSerializer != null) jsonGenerator.writeEndArray();
+            }
+            jsonGenerator.writeEndObject();
+        }
+    }
+
+    static <S> List<S> sort(final List<S> listToSort, final Comparator comparator) {
+        Collections.sort(listToSort, comparator);
+        return listToSort;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGraphSONSerializerV2d0.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGraphSONSerializerV2d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGraphSONSerializerV2d0.java
new file mode 100644
index 0000000..04d65c5
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGraphSONSerializerV2d0.java
@@ -0,0 +1,165 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.util.star;
+
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONUtil;
+import org.apache.tinkerpop.gremlin.structure.util.Comparators;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerationException;
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
+import org.apache.tinkerpop.shaded.jackson.core.JsonProcessingException;
+import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class StarGraphGraphSONSerializerV2d0 extends StdSerializer<DirectionalStarGraph> {
+    private final boolean normalize;
+    public StarGraphGraphSONSerializerV2d0(final boolean normalize) {
+        super(DirectionalStarGraph.class);
+        this.normalize = normalize;
+    }
+
+    @Override
+    public void serialize(final DirectionalStarGraph starGraph, final JsonGenerator jsonGenerator,
+                          final SerializerProvider serializerProvider) throws IOException, JsonGenerationException {
+        ser(starGraph, jsonGenerator, serializerProvider, null);
+    }
+
+    @Override
+    public void serializeWithType(final DirectionalStarGraph starGraph, final JsonGenerator jsonGenerator,
+                                  final SerializerProvider serializerProvider,
+                                  final TypeSerializer typeSerializer) throws IOException, JsonProcessingException {
+        ser(starGraph, jsonGenerator, serializerProvider, typeSerializer);
+    }
+
+    private void ser(final DirectionalStarGraph directionalStarGraph, final JsonGenerator jsonGenerator,
+                     final SerializerProvider serializerProvider,
+                     final TypeSerializer typeSerializer) throws IOException, JsonProcessingException {
+        final StarGraph starGraph = directionalStarGraph.getStarGraphToSerialize();
+        GraphSONUtil.writeStartObject(starGraph, jsonGenerator, typeSerializer);
+        GraphSONUtil.writeWithType(GraphSONTokens.ID, starGraph.starVertex.id, jsonGenerator, serializerProvider, typeSerializer);
+        jsonGenerator.writeStringField(GraphSONTokens.LABEL, starGraph.starVertex.label);
+        if (directionalStarGraph.getDirection() != null) writeEdges(directionalStarGraph, jsonGenerator, serializerProvider, typeSerializer, Direction.IN);
+        if (directionalStarGraph.getDirection() != null) writeEdges(directionalStarGraph, jsonGenerator, serializerProvider, typeSerializer, Direction.OUT);
+        if (starGraph.starVertex.vertexProperties != null && !starGraph.starVertex.vertexProperties.isEmpty()) {
+            jsonGenerator.writeFieldName(GraphSONTokens.PROPERTIES);
+            GraphSONUtil.writeStartObject(starGraph, jsonGenerator, typeSerializer);
+            final Set<String> keys = normalize ? new TreeSet<>(starGraph.starVertex.vertexProperties.keySet()) : starGraph.starVertex.vertexProperties.keySet();
+            for (final String k : keys) {
+                final List<VertexProperty> vp = starGraph.starVertex.vertexProperties.get(k);
+                jsonGenerator.writeFieldName(k);
+                GraphSONUtil.writeStartArray(k, jsonGenerator, typeSerializer);
+
+                final List<VertexProperty> vertexProperties = normalize ?sort(vp, Comparators.PROPERTY_COMPARATOR) : vp;
+                for (final VertexProperty property : vertexProperties) {
+                    GraphSONUtil.writeStartObject(property, jsonGenerator, typeSerializer);
+                    GraphSONUtil.writeWithType(GraphSONTokens.ID, property.id(), jsonGenerator, serializerProvider, typeSerializer);
+                    GraphSONUtil.writeWithType(GraphSONTokens.VALUE, property.value(), jsonGenerator, serializerProvider, typeSerializer);
+
+                    final Iterator<Property> metaProperties = normalize ?
+                            IteratorUtils.list(property.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : property.properties();
+                    if (metaProperties.hasNext()) {
+                        jsonGenerator.writeFieldName(GraphSONTokens.PROPERTIES);
+                        GraphSONUtil.writeStartObject(metaProperties, jsonGenerator, typeSerializer);
+
+                        while (metaProperties.hasNext()) {
+                            final Property<Object> meta = metaProperties.next();
+                            GraphSONUtil.writeWithType(meta.key(), meta.value(), jsonGenerator, serializerProvider, typeSerializer);
+                        }
+                        GraphSONUtil.writeEndObject(metaProperties, jsonGenerator, typeSerializer);
+                    }
+                    GraphSONUtil.writeEndObject(property, jsonGenerator, typeSerializer);
+                }
+                GraphSONUtil.writeEndArray(k, jsonGenerator, typeSerializer);
+            }
+            GraphSONUtil.writeEndObject(starGraph, jsonGenerator, typeSerializer);
+        }
+        GraphSONUtil.writeEndObject(starGraph, jsonGenerator, typeSerializer);
+    }
+
+    private void writeEdges(final DirectionalStarGraph directionalStarGraph, final JsonGenerator jsonGenerator,
+                            final SerializerProvider serializerProvider,
+                            final TypeSerializer typeSerializer,
+                            final Direction direction)  throws IOException, JsonProcessingException {
+        // only write edges if there are some AND if the user requested them to be serialized AND if they match
+        // the direction being serialized by the format
+        final StarGraph starGraph = directionalStarGraph.getStarGraphToSerialize();
+        final Direction edgeDirectionToSerialize = directionalStarGraph.getDirection();
+        final Map<String, List<Edge>> starEdges = direction.equals(Direction.OUT) ? starGraph.starVertex.outEdges : starGraph.starVertex.inEdges;
+        final boolean writeEdges = null != starEdges && edgeDirectionToSerialize != null
+                && (edgeDirectionToSerialize == direction || edgeDirectionToSerialize == Direction.BOTH);
+        if (writeEdges) {
+            jsonGenerator.writeFieldName(direction == Direction.IN ? GraphSONTokens.IN_E : GraphSONTokens.OUT_E);
+            GraphSONUtil.writeStartObject(directionalStarGraph, jsonGenerator, typeSerializer);
+            final Set<String> keys = normalize ? new TreeSet<>(starEdges.keySet()) : starEdges.keySet();
+            for (final String k : keys) {
+                final List<Edge> edges = starEdges.get(k);
+                jsonGenerator.writeFieldName(k);
+                GraphSONUtil.writeStartArray(k, jsonGenerator, typeSerializer);
+
+                final List<Edge> edgesToWrite = normalize ? sort(edges, Comparators.EDGE_COMPARATOR) : edges;
+                for (final Edge edge : edgesToWrite) {
+                    GraphSONUtil.writeStartObject(edge, jsonGenerator, typeSerializer);
+                    GraphSONUtil.writeWithType(GraphSONTokens.ID, edge.id(), jsonGenerator, serializerProvider, typeSerializer);
+                    GraphSONUtil.writeWithType(direction.equals(Direction.OUT) ? GraphSONTokens.IN : GraphSONTokens.OUT,
+                            direction.equals(Direction.OUT) ? edge.inVertex().id() : edge.outVertex().id(),
+                            jsonGenerator, serializerProvider, typeSerializer);
+
+                    final Iterator<Property<Object>> edgeProperties = normalize ?
+                            IteratorUtils.list(edge.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : edge.properties();
+                    if (edgeProperties.hasNext()) {
+                        jsonGenerator.writeFieldName(GraphSONTokens.PROPERTIES);
+                        GraphSONUtil.writeStartObject(edge, jsonGenerator, typeSerializer);
+                        while (edgeProperties.hasNext()) {
+                            final Property<Object> meta = edgeProperties.next();
+                            GraphSONUtil.writeWithType(meta.key(), meta.value(), jsonGenerator, serializerProvider, typeSerializer);
+                        }
+                        GraphSONUtil.writeEndObject(edge, jsonGenerator, typeSerializer);
+                    }
+                    GraphSONUtil.writeEndObject(edge, jsonGenerator, typeSerializer);
+                }
+                GraphSONUtil.writeEndArray(k, jsonGenerator, typeSerializer);
+            }
+            GraphSONUtil.writeEndObject(directionalStarGraph, jsonGenerator, typeSerializer);
+        }
+    }
+
+    private static <S> List<S> sort(final List<S> listToSort, final Comparator comparator) {
+        Collections.sort(listToSort, comparator);
+        return listToSort;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperEmbeddedTypeTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperEmbeddedTypeTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperEmbeddedTypeTest.java
index c7549f9..4980adf 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperEmbeddedTypeTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperEmbeddedTypeTest.java
@@ -19,9 +19,9 @@
 package org.apache.tinkerpop.gremlin.structure.io.graphson;
 
 import org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper;
-import org.apache.tinkerpop.shaded.kryo.io.Input;
-import org.apache.tinkerpop.shaded.kryo.io.Output;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -39,11 +39,26 @@ import java.time.Year;
 import java.time.YearMonth;
 import java.time.ZoneOffset;
 import java.time.ZonedDateTime;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
 
 import static org.junit.Assert.assertEquals;
 
+@RunWith(Parameterized.class)
 public class GraphSONMapperEmbeddedTypeTest {
-    private final ObjectMapper mapper = GraphSONMapper.build().embedTypes(true).create().createMapper();
+
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> data() {
+        return Arrays.asList(new Object[][]{
+                {GraphSONMapper.build().version(GraphSONVersion.V1_0).embedTypes(true).create().createMapper()},
+                {GraphSONMapper.build().version(GraphSONVersion.V2_0).typeInfo(TypeInfo.PARTIAL_TYPES).create()
+                        .createMapper()},
+        });
+    }
+
+    @Parameterized.Parameter
+    public ObjectMapper mapper;
 
     @Test
     public void shouldHandleDuration()throws Exception  {
@@ -122,6 +137,40 @@ public class GraphSONMapperEmbeddedTypeTest {
         assertEquals(o, serializeDeserialize(o, ZoneOffset.class));
     }
 
+    @Test
+    public void shouldHandleMapWithTypesUsingEmbedTypeSetting() throws Exception {
+        final ObjectMapper mapper = GraphSONMapper.build()
+                .version(GraphSONVersion.V1_0)
+                .typeInfo(TypeInfo.PARTIAL_TYPES)
+                .create()
+                .createMapper();
+
+        final Map<String,Object> m = new HashMap<>();
+        m.put("test", 100L);
+
+        final String json = mapper.writeValueAsString(m);
+        final Map read = mapper.readValue(json, HashMap.class);
+
+        assertEquals(100L, read.get("test"));
+    }
+
+    @Test
+    public void shouldNotHandleMapWithTypesUsingEmbedTypeSetting() throws Exception {
+        final ObjectMapper mapper = GraphSONMapper.build()
+                .version(GraphSONVersion.V1_0)
+                .typeInfo(TypeInfo.NO_TYPES)
+                .create()
+                .createMapper();
+
+        final Map<String,Object> m = new HashMap<>();
+        m.put("test", 100L);
+
+        final String json = mapper.writeValueAsString(m);
+        final Map read = mapper.readValue(json, HashMap.class);
+
+        assertEquals(100, read.get("test"));
+    }
+
     public <T> T serializeDeserialize(final Object o, final Class<T> clazz) throws Exception {
         try (final ByteArrayOutputStream stream = new ByteArrayOutputStream()) {
             mapper.writeValue(stream, o);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperTest.java
index 41e24c6..4b2e98f 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperTest.java
@@ -21,6 +21,8 @@ package org.apache.tinkerpop.gremlin.structure.io.graphson;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalExplanation;
 import org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
 import java.time.Duration;
 import java.time.Instant;
@@ -35,12 +37,25 @@ import java.time.Year;
 import java.time.YearMonth;
 import java.time.ZoneOffset;
 import java.time.ZonedDateTime;
+import java.util.Arrays;
 
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.__;
 import static org.junit.Assert.assertEquals;
 
+@RunWith(Parameterized.class)
 public class GraphSONMapperTest {
-    private final ObjectMapper mapper = GraphSONMapper.build().embedTypes(false).create().createMapper();
+
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> data() {
+        return Arrays.asList(new Object[][]{
+                {GraphSONMapper.build().version(GraphSONVersion.V1_0).embedTypes(false).create().createMapper()},
+                {GraphSONMapper.build().version(GraphSONVersion.V2_0).typeInfo(TypeInfo.NO_TYPES).create().createMapper()},
+        });
+    }
+
+    @Parameterized.Parameter
+    public ObjectMapper mapper;
+
 
     @Test
     public void shouldHandleTraversalExplanation() throws Exception {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperV2d0PartialEmbeddedTypeTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperV2d0PartialEmbeddedTypeTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperV2d0PartialEmbeddedTypeTest.java
new file mode 100644
index 0000000..c2ad05e
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperV2d0PartialEmbeddedTypeTest.java
@@ -0,0 +1,344 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.graphson;
+
+import org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper;
+import org.junit.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.time.Duration;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.MonthDay;
+import java.time.OffsetDateTime;
+import java.time.OffsetTime;
+import java.time.Period;
+import java.time.Year;
+import java.time.YearMonth;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.fail;
+
+/**
+ * Tests automatic typed serialization/deserialization for GraphSON 2.0.
+ */
+public class GraphSONMapperV2d0PartialEmbeddedTypeTest {
+
+    private final ObjectMapper mapper = GraphSONMapper.build()
+            .version(GraphSONVersion.V2_0)
+            .typeInfo(TypeInfo.PARTIAL_TYPES)
+            .create()
+            .createMapper();
+
+    @Test
+    public void shouldHandleDurationAuto() throws Exception {
+        final Duration o = Duration.ZERO;
+        assertEquals(o, serializeDeserializeAuto(o));
+    }
+
+    @Test
+    public void shouldHandleInstantAuto() throws Exception {
+        final Instant o = Instant.ofEpochMilli(System.currentTimeMillis());
+        assertEquals(o, serializeDeserializeAuto(o));
+    }
+
+    @Test
+    public void shouldHandleLocalDateAuto() throws Exception {
+        final LocalDate o = LocalDate.now();
+        assertEquals(o, serializeDeserializeAuto(o));
+    }
+
+    @Test
+    public void shouldHandleLocalDateTimeAuto() throws Exception {
+        final LocalDateTime o = LocalDateTime.now();
+        assertEquals(o, serializeDeserializeAuto(o));
+    }
+
+    @Test
+    public void shouldHandleLocalTimeAuto() throws Exception {
+        final LocalTime o = LocalTime.now();
+        assertEquals(o, serializeDeserializeAuto(o));
+    }
+
+    @Test
+    public void shouldHandleMonthDayAuto() throws Exception {
+        final MonthDay o = MonthDay.now();
+        assertEquals(o, serializeDeserializeAuto(o));
+    }
+
+    @Test
+    public void shouldHandleOffsetDateTimeAuto() throws Exception {
+        final OffsetDateTime o = OffsetDateTime.now();
+        assertEquals(o, serializeDeserializeAuto(o));
+    }
+
+    @Test
+    public void shouldHandleOffsetTimeAuto() throws Exception {
+        final OffsetTime o = OffsetTime.now();
+        assertEquals(o, serializeDeserializeAuto(o));
+    }
+
+    @Test
+    public void shouldHandlePeriodAuto() throws Exception {
+        final Period o = Period.ofDays(3);
+        assertEquals(o, serializeDeserializeAuto(o));
+    }
+
+    @Test
+    public void shouldHandleYearAuto() throws Exception {
+        final Year o = Year.now();
+        assertEquals(o, serializeDeserializeAuto(o));
+    }
+
+    @Test
+    public void shouldHandleYearMonthAuto() throws Exception {
+        final YearMonth o = YearMonth.now();
+        assertEquals(o, serializeDeserializeAuto(o));
+    }
+
+    @Test
+    public void shouldHandleZonedDateTimeAuto() throws Exception {
+        final ZonedDateTime o = ZonedDateTime.now();
+        assertEquals(o, serializeDeserializeAuto(o));
+    }
+
+    @Test
+    public void shouldHandleZonedOffsetAuto() throws Exception {
+        final ZoneOffset o = ZonedDateTime.now().getOffset();
+        assertEquals(o, serializeDeserializeAuto(o));
+    }
+
+    @Test
+    // Trying to fail the TypeDeserializer type detection
+    public void shouldSerializeDeserializeNestedCollectionsAndMapAndTypedValuesCorrectly() throws Exception {
+        UUID uuid = UUID.randomUUID();
+        List myList = new ArrayList<>();
+
+        List myList2 = new ArrayList<>();
+        myList2.add(UUID.randomUUID());
+        myList2.add(33L);
+        myList2.add(84);
+        Map map2 = new HashMap<>();
+        map2.put("eheh", UUID.randomUUID());
+        map2.put("normal", "normal");
+        myList2.add(map2);
+
+        Map<String, Object> map1 = new HashMap<>();
+        map1.put("hello", "world");
+        map1.put("test", uuid);
+        map1.put("hehe", myList2);
+        myList.add(map1);
+
+        myList.add("kjkj");
+        myList.add(UUID.randomUUID());
+        assertEquals(myList, serializeDeserializeAuto(myList));
+
+        // no "@value" property
+        String s = "{\""+GraphSONTokens.VALUETYPE+"\":\""+GraphSONTokens.GREMLIN_TYPE_NAMESPACE +":uuid\", \"test\":2}";
+        Map map = new LinkedHashMap<>();
+        map.put(GraphSONTokens.VALUETYPE, "gremlin:uuid");
+        map.put("test", 2);
+        Object res = mapper.readValue(s, Object.class);
+        assertEquals(map, res);
+
+        // "@value" and "@type" property reversed
+        s = "{\""+GraphSONTokens.VALUEPROP+"\":2, \""+ GraphSONTokens.VALUETYPE+"\":\""+GraphSONTokens.GREMLIN_TYPE_NAMESPACE +":int64\"}";
+        res = mapper.readValue(s, Object.class);
+        assertEquals(res, 2L);
+        assertEquals(res.getClass(), Long.class);
+
+        // no "@type" property.
+        s = "{\""+GraphSONTokens.VALUEPROP+"\":2, \"id\":2}";
+        map = new LinkedHashMap<>();
+        map.put(GraphSONTokens.VALUEPROP, 2);
+        map.put("id", 2);
+        res = mapper.readValue(s, Object.class);
+        assertEquals(res, map);
+    }
+
+    @Test
+    public void shouldFailIfMoreThanTwoPropertiesInATypePattern() {
+        String s = "{\"" + GraphSONTokens.VALUEPROP + "\":2, \"" + GraphSONTokens.VALUETYPE + "\":\""+GraphSONTokens.GREMLIN_TYPE_NAMESPACE +":int64\", \"hello\": \"world\"}";
+        try {
+            mapper.readValue(s, Object.class);
+            fail("Should have failed deserializing because there's more than properties in the type.");
+        } catch (IOException e) {
+            assertThat(e.getMessage(), containsString("Detected the type pattern in the JSON payload but the map containing the types and values contains other fields. This is not allowed by the deserializer."));
+        }
+        s = "{\"" + GraphSONTokens.VALUETYPE + "\":\""+GraphSONTokens.GREMLIN_TYPE_NAMESPACE +":int64\",\"" + GraphSONTokens.VALUEPROP + "\":2, \"hello\": \"world\"}";
+        try {
+            mapper.readValue(s, Object.class);
+            fail("Should have failed deserializing because there's more than properties in the type.");
+        } catch (IOException e) {
+            assertThat(e.getMessage(), containsString("Detected the type pattern in the JSON payload but the map containing the types and values contains other fields. This is not allowed by the deserializer."));
+        }
+    }
+
+    @Test
+    public void shouldFailIfTypeSpecifiedIsNotSameTypeInPayload() {
+        final ZoneOffset o = ZonedDateTime.now().getOffset();
+        final ByteArrayOutputStream stream = new ByteArrayOutputStream();
+        try {
+            mapper.writeValue(stream, o);
+            final InputStream inputStream = new ByteArrayInputStream(stream.toByteArray());
+            // What has been serialized is a ZoneOffset with the type, but the user explicitly requires another type.
+            mapper.readValue(inputStream, Instant.class);
+            fail("Should have failed decoding the value");
+        } catch (Exception e) {
+            assertThat(e.getMessage(), containsString("Could not deserialize the JSON value as required. Nested exception: java.lang.InstantiationException: Cannot deserialize the value with the detected type contained in the JSON ('"+GraphSONTokens.GREMLIN_TYPE_NAMESPACE +":zoneoffset') to the type specified in parameter to the object mapper (class java.time.Instant). Those types are incompatible."));
+        }
+    }
+
+    @Test
+    public void shouldHandleRawPOJOs() throws Exception {
+        final FunObject funObject = new FunObject();
+        funObject.setVal("test");
+        assertEquals(funObject.toString(), serializeDeserialize(funObject, FunObject.class).toString());
+        assertEquals(funObject.getClass(), serializeDeserialize(funObject, FunObject.class).getClass());
+    }
+
+    @Test
+    public void shouldHandleMapWithTypesUsingEmbedTypeSetting() throws Exception {
+        final ObjectMapper mapper = GraphSONMapper.build()
+                .version(GraphSONVersion.V2_0)
+                .embedTypes(true)
+                .create()
+                .createMapper();
+
+        final Map<String,Object> m = new HashMap<>();
+        m.put("test", 100L);
+
+        final String json = mapper.writeValueAsString(m);
+        final Map read = mapper.readValue(json, HashMap.class);
+
+        assertEquals(100L, read.get("test"));
+    }
+
+    @Test
+    public void shouldNotHandleMapWithTypesUsingEmbedTypeSetting() throws Exception {
+        final ObjectMapper mapper = GraphSONMapper.build()
+                .version(GraphSONVersion.V2_0)
+                .embedTypes(false)
+                .create()
+                .createMapper();
+
+        final Map<String,Object> m = new HashMap<>();
+        m.put("test", 100L);
+
+        final String json = mapper.writeValueAsString(m);
+        final Map read = mapper.readValue(json, HashMap.class);
+
+        assertEquals(100, read.get("test"));
+    }
+
+    @Test
+    public void shouldLooseTypesInfoWithGraphSONNoType() throws Exception {
+        ObjectMapper mapper = GraphSONMapper.build()
+                .version(GraphSONVersion.V2_0)
+                .typeInfo(TypeInfo.NO_TYPES)
+                .create()
+                .createMapper();
+
+        UUID uuid = UUID.randomUUID();
+        List myList = new ArrayList<>();
+
+        List myList2 = new ArrayList<>();
+        myList2.add(UUID.randomUUID());
+        myList2.add(33L);
+        myList2.add(84);
+        Map map2 = new HashMap<>();
+        map2.put("eheh", UUID.randomUUID());
+        map2.put("normal", "normal");
+        myList2.add(map2);
+
+        Map<String, Object> map1 = new HashMap<>();
+        map1.put("hello", "world");
+        map1.put("test", uuid);
+        map1.put("hehe", myList2);
+        myList.add(map1);
+
+        myList.add("kjkj");
+        myList.add(UUID.randomUUID());
+
+        String json = mapper.writeValueAsString(myList);
+        Object read = mapper.readValue(json, Object.class);
+
+        // Not equals because of type loss
+        assertNotEquals(myList, read);
+    }
+
+
+    // Class needs to be defined as statics as it's a nested class.
+    public static class FunObject {
+        private String val;
+
+        public FunObject() {
+        }
+
+        public String getVal() {
+            return this.val;
+        }
+
+        public void setVal(String s) {
+            this.val = s;
+        }
+
+        public String toString() {
+            return this.val;
+        }
+    }
+
+    public <T> T serializeDeserialize(final Object o, final Class<T> clazz) throws Exception {
+        try (final ByteArrayOutputStream stream = new ByteArrayOutputStream()) {
+            mapper.writeValue(stream, o);
+
+            try (final InputStream inputStream = new ByteArrayInputStream(stream.toByteArray())) {
+                return mapper.readValue(inputStream, clazz);
+            }
+        }
+    }
+
+    public <T> T serializeDeserializeAuto(final Object o) throws Exception {
+        try (final ByteArrayOutputStream stream = new ByteArrayOutputStream()) {
+            mapper.writeValue(stream, o);
+
+            try (final InputStream inputStream = new ByteArrayInputStream(stream.toByteArray())) {
+                // Object.class is the wildcard that triggers the auto discovery.
+                return (T)mapper.readValue(inputStream, Object.class);
+            }
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java
new file mode 100644
index 0000000..d0303eb
--- /dev/null
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java
@@ -0,0 +1,248 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.driver.ser;
+
+import groovy.json.JsonBuilder;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufAllocator;
+import io.netty.util.ReferenceCountUtil;
+import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONIo;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONUtil;
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerationException;
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
+import org.apache.tinkerpop.shaded.jackson.core.type.TypeReference;
+import org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper;
+import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.module.SimpleModule;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public abstract class AbstractGraphSONMessageSerializerV2d0 extends AbstractMessageSerializer {
+    private static final Logger logger = LoggerFactory.getLogger(AbstractGraphSONMessageSerializerV2d0.class);
+
+    protected ObjectMapper mapper;
+
+    protected static final String TOKEN_USE_MAPPER_FROM_GRAPH = "useMapperFromGraph";
+
+    protected final TypeReference<Map<String, Object>> mapTypeReference = new TypeReference<Map<String, Object>>() {
+    };
+
+    public AbstractGraphSONMessageSerializerV2d0() {
+        final GraphSONMapper.Builder builder = configureBuilder(GraphSONMapper.build());
+        mapper = builder.create().createMapper();
+    }
+
+    public AbstractGraphSONMessageSerializerV2d0(final GraphSONMapper mapper) {
+        this.mapper = mapper.createMapper();
+    }
+
+    abstract byte[] obtainHeader();
+
+    abstract GraphSONMapper.Builder configureBuilder(final GraphSONMapper.Builder builder);
+
+    @Override
+    public void configure(final Map<String, Object> config, final Map<String, Graph> graphs) {
+        final GraphSONMapper.Builder initialBuilder;
+        final Object graphToUseForMapper = config.get(TOKEN_USE_MAPPER_FROM_GRAPH);
+        if (graphToUseForMapper != null) {
+            if (null == graphs) throw new IllegalStateException(String.format(
+                    "No graphs have been provided to the serializer and therefore %s is not a valid configuration", TOKEN_USE_MAPPER_FROM_GRAPH));
+
+            final Graph g = graphs.get(graphToUseForMapper.toString());
+            if (null == g) throw new IllegalStateException(String.format(
+                    "There is no graph named [%s] configured to be used in the %s setting",
+                    graphToUseForMapper, TOKEN_USE_MAPPER_FROM_GRAPH));
+
+            // a graph was found so use the mapper it constructs.  this allows graphson to be auto-configured with any
+            // custom classes that the implementation allows for
+            initialBuilder = g.io(GraphSONIo.build()).mapper();
+        } else {
+            // no graph was supplied so just use the default - this will likely be the case when using a graph
+            // with no custom classes or a situation where the user needs complete control like when using two
+            // distinct implementations each with their own custom classes.
+            initialBuilder = GraphSONMapper.build();
+        }
+
+        addIoRegistries(config, initialBuilder);
+
+        mapper = configureBuilder(initialBuilder).create().createMapper();
+    }
+
+    @Override
+    public ByteBuf serializeResponseAsBinary(final ResponseMessage responseMessage, final ByteBufAllocator allocator) throws SerializationException {
+        ByteBuf encodedMessage = null;
+        try {
+            final byte[] payload = mapper.writeValueAsBytes(responseMessage);
+            encodedMessage = allocator.buffer(payload.length);
+            encodedMessage.writeBytes(payload);
+
+            return encodedMessage;
+        } catch (Exception ex) {
+            if (encodedMessage != null) ReferenceCountUtil.release(encodedMessage);
+
+            logger.warn("Response [{}] could not be serialized by {}.", responseMessage.toString(), AbstractGraphSONMessageSerializerV2d0.class.getName());
+            throw new SerializationException(ex);
+        }
+    }
+
+    @Override
+    public ByteBuf serializeRequestAsBinary(final RequestMessage requestMessage, final ByteBufAllocator allocator) throws SerializationException {
+        ByteBuf encodedMessage = null;
+        try {
+            final byte[] header = obtainHeader();
+            final byte[] payload = mapper.writeValueAsBytes(requestMessage);
+
+            encodedMessage = allocator.buffer(header.length + payload.length);
+            encodedMessage.writeBytes(header);
+            encodedMessage.writeBytes(payload);
+
+            return encodedMessage;
+        } catch (Exception ex) {
+            if (encodedMessage != null) ReferenceCountUtil.release(encodedMessage);
+
+            logger.warn("Request [{}] could not be serialized by {}.", requestMessage.toString(), AbstractGraphSONMessageSerializerV2d0.class.getName());
+            throw new SerializationException(ex);
+        }
+    }
+
+    @Override
+    public RequestMessage deserializeRequest(final ByteBuf msg) throws SerializationException {
+        try {
+            final byte[] payload = new byte[msg.readableBytes()];
+            msg.readBytes(payload);
+            return mapper.readValue(payload, RequestMessage.class);
+        } catch (Exception ex) {
+            logger.warn("Request [{}] could not be deserialized by {}.", msg, AbstractGraphSONMessageSerializerV2d0.class.getName());
+            throw new SerializationException(ex);
+        }
+    }
+
+    @Override
+    public ResponseMessage deserializeResponse(final ByteBuf msg) throws SerializationException {
+        try {
+            final byte[] payload = new byte[msg.readableBytes()];
+            msg.readBytes(payload);
+            final Map<String, Object> responseData = mapper.readValue(payload, mapTypeReference);
+            final Map<String, Object> status = (Map<String, Object>) responseData.get(SerTokens.TOKEN_STATUS);
+            final Map<String, Object> result = (Map<String, Object>) responseData.get(SerTokens.TOKEN_RESULT);
+            return ResponseMessage.build(UUID.fromString(responseData.get(SerTokens.TOKEN_REQUEST).toString()))
+                    .code(ResponseStatusCode.getFromValue((Integer) status.get(SerTokens.TOKEN_CODE)))
+                    .statusMessage(status.get(SerTokens.TOKEN_MESSAGE).toString())
+                    .statusAttributes((Map<String, Object>) status.get(SerTokens.TOKEN_ATTRIBUTES))
+                    .result(result.get(SerTokens.TOKEN_DATA))
+                    .responseMetaData((Map<String, Object>) result.get(SerTokens.TOKEN_META))
+                    .create();
+        } catch (Exception ex) {
+            logger.warn("Response [{}] could not be deserialized by {}.", msg, AbstractGraphSONMessageSerializerV2d0.class.getName());
+            throw new SerializationException(ex);
+        }
+    }
+
+    public final static class GremlinServerModule extends SimpleModule {
+        public GremlinServerModule() {
+            super("graphson-gremlin-server");
+            addSerializer(JsonBuilder.class, new JsonBuilderJacksonSerializer());
+            addSerializer(ResponseMessage.class, new ResponseMessageSerializer());
+        }
+    }
+
+    public final static class JsonBuilderJacksonSerializer extends StdSerializer<JsonBuilder> {
+        public JsonBuilderJacksonSerializer() {
+            super(JsonBuilder.class);
+        }
+
+        @Override
+        public void serialize(final JsonBuilder json, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
+                throws IOException, JsonGenerationException {
+            // the JSON from the builder will already be started/ended as array or object...just need to surround it
+            // with appropriate chars to fit into the serialization pattern.
+            jsonGenerator.writeRaw(":");
+            jsonGenerator.writeRaw(json.toString());
+            jsonGenerator.writeRaw(",");
+        }
+    }
+
+    public final static class ResponseMessageSerializer extends StdSerializer<ResponseMessage> {
+        public ResponseMessageSerializer() {
+            super(ResponseMessage.class);
+        }
+
+        @Override
+        public void serialize(final ResponseMessage responseMessage, final JsonGenerator jsonGenerator,
+                              final SerializerProvider serializerProvider) throws IOException {
+            ser(responseMessage, jsonGenerator, serializerProvider, null);
+        }
+
+        @Override
+        public void serializeWithType(final ResponseMessage responseMessage, final JsonGenerator jsonGenerator,
+                                      final SerializerProvider serializerProvider,
+                                      final TypeSerializer typeSerializer) throws IOException {
+            ser(responseMessage, jsonGenerator, serializerProvider, typeSerializer);
+        }
+
+        public void ser(final ResponseMessage responseMessage, final JsonGenerator jsonGenerator,
+                        final SerializerProvider serializerProvider,
+                        final TypeSerializer typeSerializer) throws IOException {
+            GraphSONUtil.writeStartObject(responseMessage, jsonGenerator, typeSerializer);
+
+            jsonGenerator.writeStringField(SerTokens.TOKEN_REQUEST, responseMessage.getRequestId() != null ? responseMessage.getRequestId().toString() : null);
+            jsonGenerator.writeFieldName(SerTokens.TOKEN_STATUS);
+
+            GraphSONUtil.writeStartObject(responseMessage, jsonGenerator, typeSerializer);
+            jsonGenerator.writeStringField(SerTokens.TOKEN_MESSAGE, responseMessage.getStatus().getMessage());
+            jsonGenerator.writeNumberField(SerTokens.TOKEN_CODE, responseMessage.getStatus().getCode().getValue());
+            jsonGenerator.writeObjectField(SerTokens.TOKEN_ATTRIBUTES, responseMessage.getStatus().getAttributes());
+            GraphSONUtil.writeEndObject(responseMessage, jsonGenerator, typeSerializer);
+
+            jsonGenerator.writeFieldName(SerTokens.TOKEN_RESULT);
+
+            GraphSONUtil.writeStartObject(responseMessage, jsonGenerator, typeSerializer);
+
+            if (null == responseMessage.getResult().getData())
+            {
+                jsonGenerator.writeNullField(SerTokens.TOKEN_DATA);
+            }
+            else
+            {
+                jsonGenerator.writeFieldName(SerTokens.TOKEN_DATA);
+                Object result = responseMessage.getResult().getData();
+                serializerProvider.findTypedValueSerializer(result.getClass(), true, null).serialize(result, jsonGenerator, serializerProvider);
+            }
+
+            jsonGenerator.writeObjectField(SerTokens.TOKEN_META, responseMessage.getResult().getMeta());
+            GraphSONUtil.writeEndObject(responseMessage, jsonGenerator, typeSerializer);
+
+            GraphSONUtil.writeEndObject(responseMessage, jsonGenerator, typeSerializer);
+        }
+    }
+}


[03/19] tinkerpop git commit: TINKERPOP-1274: GraphSON 2.0.

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead-v2d0.json
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead-v2d0.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead-v2d0.json
new file mode 100644
index 0000000..92c4d84
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead-v2d0.json
@@ -0,0 +1,808 @@
+{"id":1,"label":"song","inE":{"followedBy":[{"id":3059,"outV":153,"properties":{"weight":1}},{"id":276,"outV":5,"properties":{"weight":2}},{"id":3704,"outV":3,"properties":{"weight":2}},{"id":4383,"outV":62,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":0,"inV":2,"properties":{"weight":1}},{"id":1,"inV":3,"properties":{"weight":2}},{"id":2,"inV":4,"properties":{"weight":1}},{"id":3,"inV":5,"properties":{"weight":1}},{"id":4,"inV":6,"properties":{"weight":1}}],"sungBy":[{"id":7612,"inV":340}],"writtenBy":[{"id":7611,"inV":527}]},"properties":{"name":[{"id":0,"value":"HEY BO DIDDLEY"}],"songType":[{"id":2,"value":"cover"}],"performances":[{"id":1,"value":5}]}}
+{"id":2,"label":"song","inE":{"followedBy":[{"id":0,"outV":1,"properties":{"weight":1}},{"id":323,"outV":34,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":6190,"inV":123,"properties":{"weight":1}},{"id":6191,"inV":50,"properties":{"weight":1}}],"sungBy":[{"id":7666,"inV":525}],"writtenBy":[{"id":7665,"inV":525}]},"properties":{"name":[{"id":3,"value":"IM A MAN"}],"songType":[{"id":5,"value":"cover"}],"performances":[{"id":4,"value":1}]}}
+{"id":3,"label":"song","inE":{"followedBy":[{"id":1,"outV":1,"properties":{"weight":2}},{"id":2051,"outV":92,"properties":{"weight":4}},{"id":1412,"outV":83,"properties":{"weight":6}},{"id":6669,"outV":12,"properties":{"weight":1}},{"id":526,"outV":120,"properties":{"weight":2}},{"id":910,"outV":91,"properties":{"weight":3}},{"id":1166,"outV":26,"properties":{"weight":4}},{"id":6286,"outV":49,"properties":{"weight":1}},{"id":273,"outV":5,"properties":{"weight":40}},{"id":2194,"outV":235,"properties":{"weight":1}},{"id":1684,"outV":124,"properties":{"weight":1}},{"id":1941,"outV":148,"properties":{"weight":4}},{"id":3221,"outV":63,"properties":{"weight":1}},{"id":2712,"outV":13,"properties":{"weight":3}},{"id":6425,"outV":134,"properties":{"weight":2}},{"id":5787,"outV":76,"properties":{"weight":2}},{"id":5148,"outV":125,"properties":{"weight":4}},{"id":6692,"outV":141,"properties":{"weight":2}},{"id":6310,"outV":123,"properties":{"weight":1}},{"id":6448,"outV":187,"properties":{"wei
 ght":3}},{"id":2225,"outV":226,"properties":{"weight":1}},{"id":5042,"outV":209,"properties":{"weight":1}},{"id":4789,"outV":114,"properties":{"weight":2}},{"id":1464,"outV":81,"properties":{"weight":1}},{"id":2232,"outV":215,"properties":{"weight":1}},{"id":4665,"outV":154,"properties":{"weight":1}},{"id":2235,"outV":29,"properties":{"weight":163}},{"id":6208,"outV":319,"properties":{"weight":4}},{"id":706,"outV":206,"properties":{"weight":2}},{"id":835,"outV":171,"properties":{"weight":1}},{"id":5188,"outV":99,"properties":{"weight":1}},{"id":1862,"outV":94,"properties":{"weight":10}},{"id":1735,"outV":82,"properties":{"weight":1}},{"id":6343,"outV":21,"properties":{"weight":1}},{"id":4937,"outV":277,"properties":{"weight":1}},{"id":3276,"outV":160,"properties":{"weight":1}},{"id":3149,"outV":104,"properties":{"weight":1}},{"id":1358,"outV":130,"properties":{"weight":18}},{"id":4304,"outV":110,"properties":{"weight":1}},{"id":1105,"outV":59,"properties":{"weight":1}},{"id":722,"ou
 tV":80,"properties":{"weight":1}},{"id":4182,"outV":54,"properties":{"weight":1}},{"id":1499,"outV":164,"properties":{"weight":2}},{"id":2397,"outV":179,"properties":{"weight":1}},{"id":351,"outV":178,"properties":{"weight":1}},{"id":6623,"outV":127,"properties":{"weight":3}},{"id":2018,"outV":149,"properties":{"weight":1}},{"id":7011,"outV":89,"properties":{"weight":2}},{"id":5348,"outV":165,"properties":{"weight":1}},{"id":2278,"outV":25,"properties":{"weight":7}},{"id":1255,"outV":27,"properties":{"weight":2}},{"id":3048,"outV":153,"properties":{"weight":13}},{"id":5867,"outV":96,"properties":{"weight":116}},{"id":364,"outV":74,"properties":{"weight":2}},{"id":492,"outV":98,"properties":{"weight":1}},{"id":3948,"outV":138,"properties":{"weight":4}},{"id":4335,"outV":62,"properties":{"weight":1}},{"id":3312,"outV":252,"properties":{"weight":1}},{"id":5745,"outV":129,"properties":{"weight":1}},{"id":4596,"outV":85,"properties":{"weight":3}},{"id":5367,"outV":132,"properties":{"weig
 ht":1}},{"id":633,"outV":23,"properties":{"weight":1}},{"id":891,"outV":140,"properties":{"weight":2}},{"id":5375,"outV":69,"properties":{"weight":1}},{"id":6143,"outV":289,"properties":{"weight":3}}]},"outE":{"followedBy":[{"id":3712,"inV":27,"properties":{"weight":1}},{"id":3713,"inV":110,"properties":{"weight":4}},{"id":3714,"inV":215,"properties":{"weight":4}},{"id":3715,"inV":127,"properties":{"weight":10}},{"id":3716,"inV":83,"properties":{"weight":3}},{"id":3717,"inV":103,"properties":{"weight":2}},{"id":3718,"inV":68,"properties":{"weight":1}},{"id":3719,"inV":134,"properties":{"weight":2}},{"id":3720,"inV":25,"properties":{"weight":10}},{"id":3721,"inV":125,"properties":{"weight":54}},{"id":3722,"inV":130,"properties":{"weight":26}},{"id":3723,"inV":141,"properties":{"weight":2}},{"id":3724,"inV":145,"properties":{"weight":1}},{"id":3725,"inV":319,"properties":{"weight":3}},{"id":3726,"inV":12,"properties":{"weight":1}},{"id":3727,"inV":160,"properties":{"weight":37}},{"id"
 :3728,"inV":70,"properties":{"weight":2}},{"id":3729,"inV":123,"properties":{"weight":1}},{"id":3730,"inV":129,"properties":{"weight":1}},{"id":3731,"inV":30,"properties":{"weight":2}},{"id":3732,"inV":148,"properties":{"weight":1}},{"id":3733,"inV":211,"properties":{"weight":3}},{"id":3734,"inV":87,"properties":{"weight":13}},{"id":3735,"inV":164,"properties":{"weight":4}},{"id":3736,"inV":64,"properties":{"weight":2}},{"id":3737,"inV":320,"properties":{"weight":1}},{"id":3738,"inV":61,"properties":{"weight":3}},{"id":3739,"inV":210,"properties":{"weight":3}},{"id":3740,"inV":50,"properties":{"weight":7}},{"id":3741,"inV":128,"properties":{"weight":3}},{"id":3742,"inV":315,"properties":{"weight":1}},{"id":3743,"inV":261,"properties":{"weight":1}},{"id":3744,"inV":213,"properties":{"weight":13}},{"id":3745,"inV":72,"properties":{"weight":1}},{"id":3746,"inV":38,"properties":{"weight":4}},{"id":3747,"inV":204,"properties":{"weight":14}},{"id":3748,"inV":62,"properties":{"weight":2}},
 {"id":3749,"inV":150,"properties":{"weight":8}},{"id":3750,"inV":309,"properties":{"weight":1}},{"id":3751,"inV":131,"properties":{"weight":1}},{"id":3752,"inV":151,"properties":{"weight":1}},{"id":3753,"inV":321,"properties":{"weight":1}},{"id":3754,"inV":90,"properties":{"weight":2}},{"id":3755,"inV":82,"properties":{"weight":1}},{"id":3756,"inV":120,"properties":{"weight":1}},{"id":3757,"inV":46,"properties":{"weight":5}},{"id":3758,"inV":157,"properties":{"weight":5}},{"id":3759,"inV":59,"properties":{"weight":1}},{"id":3760,"inV":81,"properties":{"weight":1}},{"id":3761,"inV":86,"properties":{"weight":5}},{"id":3762,"inV":140,"properties":{"weight":1}},{"id":3763,"inV":201,"properties":{"weight":1}},{"id":3764,"inV":214,"properties":{"weight":1}},{"id":3765,"inV":185,"properties":{"weight":2}},{"id":3766,"inV":216,"properties":{"weight":1}},{"id":3767,"inV":217,"properties":{"weight":2}},{"id":3768,"inV":236,"properties":{"weight":5}},{"id":3769,"inV":193,"properties":{"weight"
 :1}},{"id":3770,"inV":79,"properties":{"weight":2}},{"id":3771,"inV":84,"properties":{"weight":1}},{"id":3772,"inV":23,"properties":{"weight":2}},{"id":3773,"inV":31,"properties":{"weight":2}},{"id":3774,"inV":240,"properties":{"weight":1}},{"id":3775,"inV":292,"properties":{"weight":1}},{"id":3776,"inV":9,"properties":{"weight":1}},{"id":3777,"inV":259,"properties":{"weight":1}},{"id":3694,"inV":5,"properties":{"weight":57}},{"id":3695,"inV":114,"properties":{"weight":30}},{"id":3696,"inV":74,"properties":{"weight":2}},{"id":3697,"inV":78,"properties":{"weight":3}},{"id":3698,"inV":10,"properties":{"weight":1}},{"id":3699,"inV":26,"properties":{"weight":4}},{"id":3700,"inV":153,"properties":{"weight":7}},{"id":3701,"inV":4,"properties":{"weight":4}},{"id":3702,"inV":317,"properties":{"weight":1}},{"id":3703,"inV":13,"properties":{"weight":5}},{"id":3704,"inV":1,"properties":{"weight":2}},{"id":3705,"inV":21,"properties":{"weight":2}},{"id":3706,"inV":57,"properties":{"weight":2}},{
 "id":3707,"inV":122,"properties":{"weight":2}},{"id":3708,"inV":318,"properties":{"weight":1}},{"id":3709,"inV":94,"properties":{"weight":26}},{"id":3710,"inV":96,"properties":{"weight":7}},{"id":3711,"inV":124,"properties":{"weight":15}}],"sungBy":[{"id":7808,"inV":351}],"writtenBy":[{"id":7807,"inV":671}]},"properties":{"name":[{"id":6,"value":"NOT FADE AWAY"}],"songType":[{"id":8,"value":"cover"}],"performances":[{"id":7,"value":531}]}}
+{"id":4,"label":"song","inE":{"followedBy":[{"id":128,"outV":97,"properties":{"weight":1}},{"id":1664,"outV":267,"properties":{"weight":1}},{"id":2,"outV":1,"properties":{"weight":1}},{"id":899,"outV":140,"properties":{"weight":1}},{"id":1667,"outV":124,"properties":{"weight":15}},{"id":4099,"outV":48,"properties":{"weight":1}},{"id":1156,"outV":26,"properties":{"weight":16}},{"id":773,"outV":122,"properties":{"weight":9}},{"id":6534,"outV":242,"properties":{"weight":1}},{"id":1032,"outV":73,"properties":{"weight":1}},{"id":6664,"outV":12,"properties":{"weight":3}},{"id":5129,"outV":222,"properties":{"weight":1}},{"id":5387,"outV":69,"properties":{"weight":1}},{"id":5517,"outV":43,"properties":{"weight":2}},{"id":5006,"outV":30,"properties":{"weight":2}},{"id":6030,"outV":204,"properties":{"weight":2}},{"id":2063,"outV":92,"properties":{"weight":1}},{"id":915,"outV":91,"properties":{"weight":2}},{"id":6940,"outV":84,"properties":{"weight":5}},{"id":2464,"outV":68,"properties":{"weig
 ht":1}},{"id":5795,"outV":76,"properties":{"weight":2}},{"id":3620,"outV":24,"properties":{"weight":2}},{"id":4772,"outV":114,"properties":{"weight":25}},{"id":2982,"outV":14,"properties":{"weight":3}},{"id":3367,"outV":184,"properties":{"weight":6}},{"id":2345,"outV":87,"properties":{"weight":2}},{"id":2861,"outV":101,"properties":{"weight":6}},{"id":1840,"outV":275,"properties":{"weight":1}},{"id":5425,"outV":102,"properties":{"weight":1}},{"id":180,"outV":70,"properties":{"weight":46}},{"id":2613,"outV":158,"properties":{"weight":1}},{"id":5434,"outV":217,"properties":{"weight":1}},{"id":5562,"outV":162,"properties":{"weight":2}},{"id":1469,"outV":81,"properties":{"weight":1}},{"id":446,"outV":38,"properties":{"weight":7}},{"id":2494,"outV":90,"properties":{"weight":3}},{"id":3266,"outV":160,"properties":{"weight":10}},{"id":326,"outV":34,"properties":{"weight":1}},{"id":583,"outV":120,"properties":{"weight":2}},{"id":6855,"outV":64,"properties":{"weight":12}},{"id":73,"outV":46,
 "properties":{"weight":4}},{"id":4425,"outV":212,"properties":{"weight":1}},{"id":1613,"outV":210,"properties":{"weight":2}},{"id":4941,"outV":86,"properties":{"weight":2}},{"id":6350,"outV":21,"properties":{"weight":1}},{"id":3535,"outV":201,"properties":{"weight":1}},{"id":980,"outV":11,"properties":{"weight":3}},{"id":1494,"outV":164,"properties":{"weight":3}},{"id":5206,"outV":99,"properties":{"weight":1}},{"id":5847,"outV":61,"properties":{"weight":2}},{"id":6490,"outV":187,"properties":{"weight":1}},{"id":2781,"outV":15,"properties":{"weight":4}},{"id":5600,"outV":42,"properties":{"weight":1}},{"id":353,"outV":74,"properties":{"weight":6}},{"id":5474,"outV":79,"properties":{"weight":1}},{"id":1891,"outV":103,"properties":{"weight":19}},{"id":3811,"outV":88,"properties":{"weight":2}},{"id":5989,"outV":50,"properties":{"weight":12}},{"id":4327,"outV":110,"properties":{"weight":2}},{"id":2538,"outV":57,"properties":{"weight":4}},{"id":3050,"outV":153,"properties":{"weight":13}},{
 "id":4970,"outV":236,"properties":{"weight":1}},{"id":2283,"outV":25,"properties":{"weight":9}},{"id":236,"outV":145,"properties":{"weight":1}},{"id":6126,"outV":72,"properties":{"weight":2}},{"id":5232,"outV":214,"properties":{"weight":2}},{"id":4594,"outV":85,"properties":{"weight":1}},{"id":1652,"outV":213,"properties":{"weight":3}},{"id":4084,"outV":109,"properties":{"weight":1}},{"id":629,"outV":23,"properties":{"weight":10}},{"id":3701,"outV":3,"properties":{"weight":4}},{"id":5621,"outV":22,"properties":{"weight":1}},{"id":7029,"outV":89,"properties":{"weight":1}},{"id":5238,"outV":32,"properties":{"weight":3}},{"id":2684,"outV":13,"properties":{"weight":9}},{"id":3325,"outV":268,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":5120,"inV":40,"properties":{"weight":5}},{"id":5121,"inV":33,"properties":{"weight":3}},{"id":5122,"inV":79,"properties":{"weight":1}},{"id":5123,"inV":292,"properties":{"weight":1}},{"id":5071,"inV":50,"properties":{"weight":9}},{"id":5072,"in
 V":12,"properties":{"weight":26}},{"id":5073,"inV":18,"properties":{"weight":4}},{"id":5074,"inV":24,"properties":{"weight":9}},{"id":5075,"inV":23,"properties":{"weight":63}},{"id":5076,"inV":13,"properties":{"weight":12}},{"id":5077,"inV":10,"properties":{"weight":4}},{"id":5078,"inV":11,"properties":{"weight":3}},{"id":5079,"inV":26,"properties":{"weight":18}},{"id":5080,"inV":22,"properties":{"weight":1}},{"id":5081,"inV":16,"properties":{"weight":2}},{"id":5082,"inV":49,"properties":{"weight":1}},{"id":5083,"inV":25,"properties":{"weight":2}},{"id":5084,"inV":51,"properties":{"weight":1}},{"id":5085,"inV":15,"properties":{"weight":1}},{"id":5086,"inV":112,"properties":{"weight":4}},{"id":5087,"inV":121,"properties":{"weight":1}},{"id":5088,"inV":32,"properties":{"weight":7}},{"id":5089,"inV":68,"properties":{"weight":2}},{"id":5090,"inV":120,"properties":{"weight":77}},{"id":5091,"inV":103,"properties":{"weight":1}},{"id":5092,"inV":42,"properties":{"weight":3}},{"id":5093,"inV
 ":85,"properties":{"weight":4}},{"id":5094,"inV":76,"properties":{"weight":5}},{"id":5095,"inV":181,"properties":{"weight":2}},{"id":5096,"inV":14,"properties":{"weight":2}},{"id":5097,"inV":122,"properties":{"weight":1}},{"id":5098,"inV":153,"properties":{"weight":3}},{"id":5099,"inV":96,"properties":{"weight":1}},{"id":5100,"inV":82,"properties":{"weight":3}},{"id":5101,"inV":110,"properties":{"weight":1}},{"id":5102,"inV":19,"properties":{"weight":6}},{"id":5103,"inV":129,"properties":{"weight":1}},{"id":5104,"inV":84,"properties":{"weight":1}},{"id":5105,"inV":88,"properties":{"weight":9}},{"id":5106,"inV":97,"properties":{"weight":1}},{"id":5107,"inV":114,"properties":{"weight":2}},{"id":5108,"inV":30,"properties":{"weight":8}},{"id":5109,"inV":31,"properties":{"weight":8}},{"id":5110,"inV":69,"properties":{"weight":4}},{"id":5111,"inV":127,"properties":{"weight":2}},{"id":5112,"inV":60,"properties":{"weight":1}},{"id":5113,"inV":39,"properties":{"weight":2}},{"id":5114,"inV":2
 1,"properties":{"weight":1}},{"id":5115,"inV":117,"properties":{"weight":1}},{"id":5116,"inV":78,"properties":{"weight":1}},{"id":5117,"inV":38,"properties":{"weight":1}},{"id":5118,"inV":169,"properties":{"weight":2}},{"id":5119,"inV":118,"properties":{"weight":1}}],"sungBy":[{"id":7064,"inV":340}],"writtenBy":[{"id":7063,"inV":339}]},"properties":{"name":[{"id":9,"value":"BERTHA"}],"songType":[{"id":11,"value":"original"}],"performances":[{"id":10,"value":394}]}}
+{"id":5,"label":"song","inE":{"followedBy":[{"id":194,"outV":70,"properties":{"weight":8}},{"id":962,"outV":67,"properties":{"weight":5}},{"id":3,"outV":1,"properties":{"weight":1}},{"id":5446,"outV":231,"properties":{"weight":5}},{"id":6344,"outV":21,"properties":{"weight":6}},{"id":1738,"outV":82,"properties":{"weight":1}},{"id":6666,"outV":12,"properties":{"weight":1}},{"id":1867,"outV":94,"properties":{"weight":15}},{"id":4300,"outV":110,"properties":{"weight":1}},{"id":847,"outV":171,"properties":{"weight":1}},{"id":2832,"outV":101,"properties":{"weight":3}},{"id":6032,"outV":115,"properties":{"weight":1}},{"id":1170,"outV":26,"properties":{"weight":1}},{"id":5330,"outV":238,"properties":{"weight":1}},{"id":1491,"outV":164,"properties":{"weight":3}},{"id":1429,"outV":83,"properties":{"weight":3}},{"id":3033,"outV":14,"properties":{"weight":1}},{"id":6298,"outV":49,"properties":{"weight":1}},{"id":1373,"outV":130,"properties":{"weight":11}},{"id":4447,"outV":113,"properties":{"w
 eight":1}},{"id":5151,"outV":125,"properties":{"weight":6}},{"id":5343,"outV":165,"properties":{"weight":2}},{"id":6431,"outV":134,"properties":{"weight":2}},{"id":1953,"outV":148,"properties":{"weight":10}},{"id":1634,"outV":210,"properties":{"weight":1}},{"id":2274,"outV":25,"properties":{"weight":8}},{"id":100,"outV":46,"properties":{"weight":1}},{"id":933,"outV":91,"properties":{"weight":1}},{"id":2021,"outV":149,"properties":{"weight":1}},{"id":6694,"outV":141,"properties":{"weight":2}},{"id":4009,"outV":225,"properties":{"weight":1}},{"id":682,"outV":219,"properties":{"weight":1}},{"id":3694,"outV":3,"properties":{"weight":57}},{"id":4718,"outV":186,"properties":{"weight":6}},{"id":3055,"outV":153,"properties":{"weight":9}},{"id":2480,"outV":68,"properties":{"weight":1}},{"id":2736,"outV":13,"properties":{"weight":3}},{"id":5426,"outV":102,"properties":{"weight":1}},{"id":6899,"outV":147,"properties":{"weight":1}},{"id":5879,"outV":96,"properties":{"weight":22}},{"id":6201,"ou
 tV":319,"properties":{"weight":2}},{"id":5370,"outV":132,"properties":{"weight":2}},{"id":700,"outV":206,"properties":{"weight":1}},{"id":2236,"outV":29,"properties":{"weight":5}},{"id":4604,"outV":85,"properties":{"weight":2}},{"id":5759,"outV":129,"properties":{"weight":6}}]},"outE":{"followedBy":[{"id":273,"inV":3,"properties":{"weight":40}},{"id":274,"inV":26,"properties":{"weight":3}},{"id":275,"inV":114,"properties":{"weight":40}},{"id":276,"inV":1,"properties":{"weight":2}},{"id":277,"inV":74,"properties":{"weight":3}},{"id":278,"inV":122,"properties":{"weight":3}},{"id":279,"inV":133,"properties":{"weight":2}},{"id":280,"inV":83,"properties":{"weight":1}},{"id":281,"inV":153,"properties":{"weight":5}},{"id":282,"inV":159,"properties":{"weight":1}},{"id":283,"inV":13,"properties":{"weight":3}},{"id":284,"inV":25,"properties":{"weight":19}},{"id":285,"inV":96,"properties":{"weight":10}},{"id":286,"inV":160,"properties":{"weight":2}},{"id":287,"inV":32,"properties":{"weight":1}
 },{"id":288,"inV":120,"properties":{"weight":16}},{"id":289,"inV":50,"properties":{"weight":1}},{"id":290,"inV":116,"properties":{"weight":1}},{"id":291,"inV":127,"properties":{"weight":6}},{"id":292,"inV":65,"properties":{"weight":1}},{"id":293,"inV":130,"properties":{"weight":3}},{"id":294,"inV":125,"properties":{"weight":5}},{"id":295,"inV":70,"properties":{"weight":13}},{"id":296,"inV":134,"properties":{"weight":1}},{"id":297,"inV":161,"properties":{"weight":1}},{"id":298,"inV":162,"properties":{"weight":1}},{"id":299,"inV":124,"properties":{"weight":3}},{"id":300,"inV":38,"properties":{"weight":1}},{"id":301,"inV":29,"properties":{"weight":11}},{"id":302,"inV":163,"properties":{"weight":1}},{"id":303,"inV":94,"properties":{"weight":5}},{"id":304,"inV":85,"properties":{"weight":1}},{"id":305,"inV":164,"properties":{"weight":6}},{"id":306,"inV":64,"properties":{"weight":1}},{"id":307,"inV":150,"properties":{"weight":1}},{"id":308,"inV":165,"properties":{"weight":7}},{"id":309,"in
 V":92,"properties":{"weight":1}},{"id":310,"inV":140,"properties":{"weight":1}},{"id":311,"inV":166,"properties":{"weight":1}}],"sungBy":[{"id":7582,"inV":340}],"writtenBy":[{"id":7581,"inV":446}]},"properties":{"name":[{"id":12,"value":"GOING DOWN THE ROAD FEELING BAD"}],"songType":[{"id":14,"value":"cover"}],"performances":[{"id":13,"value":293}]}}
+{"id":6,"label":"song","inE":{"followedBy":[{"id":4,"outV":1,"properties":{"weight":1}},{"id":2023,"outV":282,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":2406,"inV":293,"properties":{"weight":1}},{"id":2407,"inV":96,"properties":{"weight":1}}],"sungBy":[{"id":7782,"inV":351}],"writtenBy":[{"id":7781,"inV":527}]},"properties":{"name":[{"id":15,"value":"MONA"}],"songType":[{"id":17,"value":"cover"}],"performances":[{"id":16,"value":1}]}}
+{"id":7,"label":"song","inE":{"followedBy":[{"id":2607,"outV":295,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":5,"inV":8,"properties":{"weight":1}}]},"properties":{"name":[{"id":18,"value":"WHERE HAVE THE HEROES GONE"}],"songType":[{"id":20,"value":""}],"performances":[{"id":19,"value":0}]}}
+{"id":8,"label":"song","inE":{"followedBy":[{"id":4705,"outV":111,"properties":{"weight":1}},{"id":5,"outV":7,"properties":{"weight":1}},{"id":5901,"outV":96,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":2976,"inV":302,"properties":{"weight":1}},{"id":2977,"inV":96,"properties":{"weight":1}},{"id":2978,"inV":72,"properties":{"weight":1}}],"sungBy":[{"id":7814,"inV":351}],"writtenBy":[{"id":7813,"inV":674}]},"properties":{"name":[{"id":21,"value":"OH BOY"}],"songType":[{"id":23,"value":"cover"}],"performances":[{"id":22,"value":2}]}}
+{"id":9,"label":"song","inE":{"followedBy":[{"id":3776,"outV":3,"properties":{"weight":1}},{"id":65,"outV":46,"properties":{"weight":2}},{"id":1923,"outV":103,"properties":{"weight":3}},{"id":5956,"outV":50,"properties":{"weight":2}},{"id":3077,"outV":153,"properties":{"weight":2}},{"id":5832,"outV":76,"properties":{"weight":1}},{"id":1161,"outV":26,"properties":{"weight":8}},{"id":2699,"outV":13,"properties":{"weight":3}},{"id":6539,"outV":55,"properties":{"weight":1}},{"id":6667,"outV":12,"properties":{"weight":2}},{"id":2578,"outV":57,"properties":{"weight":2}},{"id":787,"outV":122,"properties":{"weight":3}},{"id":3542,"outV":201,"properties":{"weight":1}},{"id":2775,"outV":15,"properties":{"weight":5}},{"id":2840,"outV":101,"properties":{"weight":2}},{"id":4953,"outV":86,"properties":{"weight":2}},{"id":1572,"outV":18,"properties":{"weight":3}},{"id":229,"outV":70,"properties":{"weight":1}},{"id":4264,"outV":10,"properties":{"weight":1}},{"id":4969,"outV":236,"properties":{"weig
 ht":3}},{"id":3498,"outV":58,"properties":{"weight":2}},{"id":5226,"outV":216,"properties":{"weight":1}},{"id":5548,"outV":166,"properties":{"weight":1}},{"id":2990,"outV":14,"properties":{"weight":4}},{"id":3950,"outV":138,"properties":{"weight":1}},{"id":2488,"outV":68,"properties":{"weight":1}},{"id":6776,"outV":39,"properties":{"weight":1}},{"id":3641,"outV":24,"properties":{"weight":2}},{"id":1532,"outV":164,"properties":{"weight":2}},{"id":1853,"outV":94,"properties":{"weight":1}},{"id":638,"outV":23,"properties":{"weight":2}},{"id":6335,"outV":21,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":6,"inV":10,"properties":{"weight":3}},{"id":7,"inV":11,"properties":{"weight":2}},{"id":8,"inV":12,"properties":{"weight":3}},{"id":9,"inV":13,"properties":{"weight":6}},{"id":10,"inV":14,"properties":{"weight":3}},{"id":11,"inV":15,"properties":{"weight":3}},{"id":12,"inV":16,"properties":{"weight":1}},{"id":13,"inV":17,"properties":{"weight":1}},{"id":14,"inV":18,"properties"
 :{"weight":5}},{"id":15,"inV":19,"properties":{"weight":1}},{"id":16,"inV":20,"properties":{"weight":1}},{"id":17,"inV":21,"properties":{"weight":1}},{"id":18,"inV":22,"properties":{"weight":2}},{"id":19,"inV":23,"properties":{"weight":2}},{"id":20,"inV":24,"properties":{"weight":1}},{"id":21,"inV":25,"properties":{"weight":1}},{"id":22,"inV":26,"properties":{"weight":1}},{"id":23,"inV":27,"properties":{"weight":1}},{"id":24,"inV":28,"properties":{"weight":2}},{"id":25,"inV":29,"properties":{"weight":1}},{"id":26,"inV":30,"properties":{"weight":5}},{"id":27,"inV":31,"properties":{"weight":2}},{"id":28,"inV":32,"properties":{"weight":1}},{"id":29,"inV":33,"properties":{"weight":2}},{"id":30,"inV":34,"properties":{"weight":2}},{"id":31,"inV":35,"properties":{"weight":3}},{"id":32,"inV":36,"properties":{"weight":2}},{"id":33,"inV":37,"properties":{"weight":3}},{"id":34,"inV":38,"properties":{"weight":1}},{"id":35,"inV":39,"properties":{"weight":1}},{"id":36,"inV":40,"properties":{"weig
 ht":1}},{"id":37,"inV":41,"properties":{"weight":1}},{"id":38,"inV":42,"properties":{"weight":1}},{"id":39,"inV":43,"properties":{"weight":1}}],"sungBy":[{"id":7190,"inV":340}],"writtenBy":[{"id":7189,"inV":339}]},"properties":{"name":[{"id":24,"value":"HERE COMES SUNSHINE"}],"songType":[{"id":26,"value":"original"}],"performances":[{"id":25,"value":65}]}}
+{"id":10,"label":"song","inE":{"followedBy":[{"id":3841,"outV":60,"properties":{"weight":1}},{"id":1027,"outV":73,"properties":{"weight":5}},{"id":6,"outV":9,"properties":{"weight":3}},{"id":3335,"outV":155,"properties":{"weight":1}},{"id":4103,"outV":48,"properties":{"weight":5}},{"id":6279,"outV":49,"properties":{"weight":1}},{"id":4233,"outV":52,"properties":{"weight":1}},{"id":4878,"outV":100,"properties":{"weight":19}},{"id":5264,"outV":32,"properties":{"weight":2}},{"id":2196,"outV":75,"properties":{"weight":4}},{"id":151,"outV":108,"properties":{"weight":3}},{"id":1571,"outV":18,"properties":{"weight":5}},{"id":3619,"outV":24,"properties":{"weight":2}},{"id":3237,"outV":63,"properties":{"weight":3}},{"id":4647,"outV":154,"properties":{"weight":1}},{"id":4521,"outV":105,"properties":{"weight":3}},{"id":1195,"outV":26,"properties":{"weight":1}},{"id":6444,"outV":187,"properties":{"weight":9}},{"id":6956,"outV":84,"properties":{"weight":1}},{"id":687,"outV":157,"properties":{"we
 ight":1}},{"id":4784,"outV":114,"properties":{"weight":1}},{"id":6064,"outV":115,"properties":{"weight":1}},{"id":1714,"outV":82,"properties":{"weight":3}},{"id":3890,"outV":51,"properties":{"weight":9}},{"id":55,"outV":46,"properties":{"weight":1}},{"id":5175,"outV":71,"properties":{"weight":1}},{"id":1337,"outV":31,"properties":{"weight":1}},{"id":1083,"outV":59,"properties":{"weight":10}},{"id":4155,"outV":54,"properties":{"weight":6}},{"id":6077,"outV":72,"properties":{"weight":5}},{"id":5441,"outV":239,"properties":{"weight":1}},{"id":1987,"outV":152,"properties":{"weight":2}},{"id":1860,"outV":94,"properties":{"weight":1}},{"id":2116,"outV":17,"properties":{"weight":7}},{"id":3269,"outV":160,"properties":{"weight":2}},{"id":454,"outV":38,"properties":{"weight":1}},{"id":3142,"outV":104,"properties":{"weight":4}},{"id":2505,"outV":57,"properties":{"weight":12}},{"id":6603,"outV":127,"properties":{"weight":4}},{"id":6859,"outV":64,"properties":{"weight":1}},{"id":717,"outV":80,"
 properties":{"weight":9}},{"id":1360,"outV":130,"properties":{"weight":2}},{"id":3026,"outV":14,"properties":{"weight":1}},{"id":5972,"outV":50,"properties":{"weight":1}},{"id":5077,"outV":4,"properties":{"weight":4}},{"id":2392,"outV":87,"properties":{"weight":1}},{"id":1250,"outV":27,"properties":{"weight":10}},{"id":4706,"outV":111,"properties":{"weight":3}},{"id":6755,"outV":53,"properties":{"weight":1}},{"id":485,"outV":98,"properties":{"weight":4}},{"id":2917,"outV":78,"properties":{"weight":10}},{"id":3559,"outV":56,"properties":{"weight":16}},{"id":3436,"outV":58,"properties":{"weight":10}},{"id":3820,"outV":88,"properties":{"weight":1}},{"id":4463,"outV":202,"properties":{"weight":4}},{"id":880,"outV":189,"properties":{"weight":1}},{"id":6256,"outV":117,"properties":{"weight":1}},{"id":3698,"outV":3,"properties":{"weight":1}},{"id":2035,"outV":180,"properties":{"weight":1}},{"id":2291,"outV":25,"properties":{"weight":1}},{"id":3317,"outV":252,"properties":{"weight":1}},{"id
 ":2806,"outV":15,"properties":{"weight":2}},{"id":2427,"outV":68,"properties":{"weight":2}},{"id":6782,"outV":39,"properties":{"weight":4}},{"id":4351,"outV":62,"properties":{"weight":2}}]},"outE":{"followedBy":[{"id":4235,"inV":56,"properties":{"weight":13}},{"id":4236,"inV":27,"properties":{"weight":7}},{"id":4237,"inV":58,"properties":{"weight":11}},{"id":4238,"inV":80,"properties":{"weight":6}},{"id":4239,"inV":59,"properties":{"weight":9}},{"id":4240,"inV":100,"properties":{"weight":21}},{"id":4241,"inV":104,"properties":{"weight":5}},{"id":4242,"inV":50,"properties":{"weight":2}},{"id":4243,"inV":48,"properties":{"weight":8}},{"id":4244,"inV":54,"properties":{"weight":13}},{"id":4245,"inV":19,"properties":{"weight":9}},{"id":4246,"inV":72,"properties":{"weight":4}},{"id":4247,"inV":14,"properties":{"weight":1}},{"id":4248,"inV":122,"properties":{"weight":2}},{"id":4249,"inV":235,"properties":{"weight":1}},{"id":4250,"inV":218,"properties":{"weight":1}},{"id":4251,"inV":252,"pr
 operties":{"weight":1}},{"id":4252,"inV":89,"properties":{"weight":3}},{"id":4253,"inV":57,"properties":{"weight":12}},{"id":4254,"inV":49,"properties":{"weight":3}},{"id":4255,"inV":94,"properties":{"weight":3}},{"id":4256,"inV":153,"properties":{"weight":1}},{"id":4257,"inV":13,"properties":{"weight":1}},{"id":4258,"inV":160,"properties":{"weight":1}},{"id":4259,"inV":51,"properties":{"weight":10}},{"id":4260,"inV":18,"properties":{"weight":3}},{"id":4261,"inV":202,"properties":{"weight":4}},{"id":4262,"inV":17,"properties":{"weight":5}},{"id":4263,"inV":46,"properties":{"weight":1}},{"id":4264,"inV":9,"properties":{"weight":1}},{"id":4265,"inV":55,"properties":{"weight":1}},{"id":4266,"inV":125,"properties":{"weight":1}},{"id":4267,"inV":69,"properties":{"weight":2}},{"id":4268,"inV":98,"properties":{"weight":8}},{"id":4269,"inV":82,"properties":{"weight":4}},{"id":4270,"inV":154,"properties":{"weight":1}},{"id":4271,"inV":105,"properties":{"weight":7}},{"id":4272,"inV":112,"prop
 erties":{"weight":2}},{"id":4273,"inV":109,"properties":{"weight":1}},{"id":4274,"inV":42,"properties":{"weight":2}},{"id":4275,"inV":121,"properties":{"weight":1}},{"id":4276,"inV":73,"properties":{"weight":5}},{"id":4277,"inV":106,"properties":{"weight":1}},{"id":4278,"inV":116,"properties":{"weight":1}},{"id":4279,"inV":68,"properties":{"weight":2}},{"id":4280,"inV":152,"properties":{"weight":1}},{"id":4281,"inV":23,"properties":{"weight":6}},{"id":4282,"inV":88,"properties":{"weight":1}},{"id":4283,"inV":39,"properties":{"weight":4}},{"id":4284,"inV":12,"properties":{"weight":1}},{"id":4285,"inV":111,"properties":{"weight":1}},{"id":4286,"inV":99,"properties":{"weight":1}},{"id":4287,"inV":87,"properties":{"weight":2}},{"id":4288,"inV":108,"properties":{"weight":2}},{"id":4289,"inV":53,"properties":{"weight":4}},{"id":4290,"inV":26,"properties":{"weight":5}},{"id":4291,"inV":117,"properties":{"weight":2}},{"id":4292,"inV":115,"properties":{"weight":2}},{"id":4293,"inV":63,"prope
 rties":{"weight":3}},{"id":4294,"inV":103,"properties":{"weight":1}}],"sungBy":[{"id":7460,"inV":351}],"writtenBy":[{"id":7459,"inV":471}]},"properties":{"name":[{"id":27,"value":"BEAT IT ON DOWN THE LINE"}],"songType":[{"id":29,"value":"cover"}],"performances":[{"id":28,"value":325}]}}
+{"id":11,"label":"song","inE":{"followedBy":[{"id":1088,"outV":59,"properties":{"weight":14}},{"id":6273,"outV":49,"properties":{"weight":2}},{"id":1989,"outV":152,"properties":{"weight":2}},{"id":7,"outV":9,"properties":{"weight":2}},{"id":4552,"outV":105,"properties":{"weight":3}},{"id":521,"outV":205,"properties":{"weight":1}},{"id":714,"outV":80,"properties":{"weight":5}},{"id":3146,"outV":104,"properties":{"weight":3}},{"id":4876,"outV":100,"properties":{"weight":2}},{"id":2190,"outV":235,"properties":{"weight":1}},{"id":4496,"outV":202,"properties":{"weight":1}},{"id":2513,"outV":57,"properties":{"weight":4}},{"id":4053,"outV":173,"properties":{"weight":1}},{"id":5078,"outV":4,"properties":{"weight":3}},{"id":1309,"outV":27,"properties":{"weight":5}},{"id":4769,"outV":114,"properties":{"weight":1}},{"id":5025,"outV":30,"properties":{"weight":1}},{"id":3554,"outV":56,"properties":{"weight":7}},{"id":1064,"outV":73,"properties":{"weight":1}},{"id":2920,"outV":78,"properties":{"w
 eight":2}},{"id":6056,"outV":115,"properties":{"weight":2}},{"id":41,"outV":46,"properties":{"weight":2}},{"id":3434,"outV":58,"properties":{"weight":5}},{"id":6442,"outV":187,"properties":{"weight":7}},{"id":1775,"outV":234,"properties":{"weight":4}},{"id":3888,"outV":51,"properties":{"weight":1}},{"id":626,"outV":23,"properties":{"weight":1}},{"id":1396,"outV":190,"properties":{"weight":1}},{"id":4020,"outV":191,"properties":{"weight":1}},{"id":6772,"outV":39,"properties":{"weight":1}},{"id":3637,"outV":24,"properties":{"weight":2}},{"id":6072,"outV":72,"properties":{"weight":5}},{"id":4157,"outV":54,"properties":{"weight":2}}]},"outE":{"followedBy":[{"id":972,"inV":57,"properties":{"weight":4}},{"id":973,"inV":59,"properties":{"weight":3}},{"id":974,"inV":53,"properties":{"weight":4}},{"id":975,"inV":54,"properties":{"weight":15}},{"id":976,"inV":56,"properties":{"weight":3}},{"id":977,"inV":48,"properties":{"weight":3}},{"id":978,"inV":72,"properties":{"weight":4}},{"id":979,"in
 V":19,"properties":{"weight":9}},{"id":980,"inV":4,"properties":{"weight":3}},{"id":981,"inV":58,"properties":{"weight":6}},{"id":982,"inV":46,"properties":{"weight":1}},{"id":983,"inV":234,"properties":{"weight":7}},{"id":984,"inV":235,"properties":{"weight":2}},{"id":985,"inV":207,"properties":{"weight":4}},{"id":986,"inV":39,"properties":{"weight":3}},{"id":987,"inV":50,"properties":{"weight":1}},{"id":988,"inV":104,"properties":{"weight":2}},{"id":989,"inV":49,"properties":{"weight":1}},{"id":990,"inV":17,"properties":{"weight":3}},{"id":991,"inV":100,"properties":{"weight":1}},{"id":992,"inV":24,"properties":{"weight":1}},{"id":993,"inV":170,"properties":{"weight":2}},{"id":994,"inV":73,"properties":{"weight":1}},{"id":995,"inV":173,"properties":{"weight":1}},{"id":996,"inV":236,"properties":{"weight":1}},{"id":997,"inV":202,"properties":{"weight":3}},{"id":998,"inV":80,"properties":{"weight":2}},{"id":999,"inV":115,"properties":{"weight":4}},{"id":1000,"inV":105,"properties":{
 "weight":1}}],"sungBy":[{"id":7072,"inV":351}],"writtenBy":[{"id":7071,"inV":350}]},"properties":{"name":[{"id":30,"value":"BLACK THROATED WIND"}],"songType":[{"id":32,"value":"original"}],"performances":[{"id":31,"value":158}]}}
+{"id":12,"label":"song","inE":{"followedBy":[{"id":3072,"outV":153,"properties":{"weight":4}},{"id":2433,"outV":68,"properties":{"weight":1}},{"id":1410,"outV":83,"properties":{"weight":1}},{"id":3331,"outV":155,"properties":{"weight":2}},{"id":4227,"outV":52,"properties":{"weight":3}},{"id":1028,"outV":73,"properties":{"weight":12}},{"id":4102,"outV":48,"properties":{"weight":33}},{"id":8,"outV":9,"properties":{"weight":3}},{"id":6281,"outV":49,"properties":{"weight":2}},{"id":652,"outV":23,"properties":{"weight":2}},{"id":5388,"outV":69,"properties":{"weight":1}},{"id":525,"outV":120,"properties":{"weight":1}},{"id":3726,"outV":3,"properties":{"weight":1}},{"id":783,"outV":122,"properties":{"weight":1}},{"id":3855,"outV":60,"properties":{"weight":1}},{"id":1938,"outV":148,"properties":{"weight":1}},{"id":3986,"outV":106,"properties":{"weight":1}},{"id":916,"outV":91,"properties":{"weight":1}},{"id":1172,"outV":26,"properties":{"weight":4}},{"id":6935,"outV":84,"properties":{"weigh
 t":5}},{"id":3225,"outV":63,"properties":{"weight":4}},{"id":5017,"outV":30,"properties":{"weight":1}},{"id":155,"outV":108,"properties":{"weight":6}},{"id":2203,"outV":75,"properties":{"weight":3}},{"id":4893,"outV":100,"properties":{"weight":7}},{"id":4640,"outV":154,"properties":{"weight":10}},{"id":5665,"outV":169,"properties":{"weight":1}},{"id":1702,"outV":124,"properties":{"weight":1}},{"id":2598,"outV":112,"properties":{"weight":7}},{"id":5286,"outV":32,"properties":{"weight":4}},{"id":3879,"outV":51,"properties":{"weight":12}},{"id":4007,"outV":225,"properties":{"weight":1}},{"id":424,"outV":38,"properties":{"weight":5}},{"id":4522,"outV":105,"properties":{"weight":12}},{"id":5034,"outV":47,"properties":{"weight":1}},{"id":4779,"outV":114,"properties":{"weight":3}},{"id":6576,"outV":116,"properties":{"weight":1}},{"id":6835,"outV":64,"properties":{"weight":1}},{"id":6455,"outV":187,"properties":{"weight":12}},{"id":824,"outV":171,"properties":{"weight":1}},{"id":5304,"outV"
 :170,"properties":{"weight":2}},{"id":1722,"outV":82,"properties":{"weight":1}},{"id":6074,"outV":72,"properties":{"weight":4}},{"id":4284,"outV":10,"properties":{"weight":1}},{"id":2109,"outV":17,"properties":{"weight":24}},{"id":703,"outV":206,"properties":{"weight":2}},{"id":5440,"outV":239,"properties":{"weight":2}},{"id":5952,"outV":50,"properties":{"weight":7}},{"id":1858,"outV":94,"properties":{"weight":2}},{"id":1347,"outV":31,"properties":{"weight":1}},{"id":1605,"outV":18,"properties":{"weight":1}},{"id":4165,"outV":54,"properties":{"weight":17}},{"id":3654,"outV":24,"properties":{"weight":3}},{"id":4038,"outV":173,"properties":{"weight":1}},{"id":6598,"outV":127,"properties":{"weight":1}},{"id":3271,"outV":160,"properties":{"weight":1}},{"id":3527,"outV":223,"properties":{"weight":1}},{"id":1096,"outV":59,"properties":{"weight":26}},{"id":3144,"outV":104,"properties":{"weight":24}},{"id":1993,"outV":152,"properties":{"weight":2}},{"id":6985,"outV":175,"properties":{"weigh
 t":1}},{"id":6730,"outV":53,"properties":{"weight":4}},{"id":3019,"outV":14,"properties":{"weight":1}},{"id":3788,"outV":168,"properties":{"weight":1}},{"id":5072,"outV":4,"properties":{"weight":26}},{"id":2515,"outV":57,"properties":{"weight":3}},{"id":1365,"outV":130,"properties":{"weight":2}},{"id":2647,"outV":137,"properties":{"weight":1}},{"id":730,"outV":80,"properties":{"weight":12}},{"id":2780,"outV":15,"properties":{"weight":3}},{"id":482,"outV":98,"properties":{"weight":8}},{"id":3810,"outV":88,"properties":{"weight":6}},{"id":7013,"outV":89,"properties":{"weight":1}},{"id":4072,"outV":109,"properties":{"weight":1}},{"id":2281,"outV":25,"properties":{"weight":2}},{"id":2668,"outV":13,"properties":{"weight":3}},{"id":3565,"outV":56,"properties":{"weight":9}},{"id":1262,"outV":27,"properties":{"weight":17}},{"id":2031,"outV":180,"properties":{"weight":1}},{"id":6769,"outV":39,"properties":{"weight":2}},{"id":1779,"outV":234,"properties":{"weight":1}},{"id":4468,"outV":202,"p
 roperties":{"weight":4}},{"id":1909,"outV":103,"properties":{"weight":1}},{"id":2934,"outV":78,"properties":{"weight":1}},{"id":3446,"outV":58,"properties":{"weight":4}},{"id":381,"outV":74,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":6656,"inV":49,"properties":{"weight":9}},{"id":6657,"inV":19,"properties":{"weight":3}},{"id":6658,"inV":27,"properties":{"weight":9}},{"id":6659,"inV":252,"properties":{"weight":1}},{"id":6660,"inV":206,"properties":{"weight":1}},{"id":6661,"inV":89,"properties":{"weight":4}},{"id":6662,"inV":160,"properties":{"weight":1}},{"id":6663,"inV":15,"properties":{"weight":167}},{"id":6664,"inV":4,"properties":{"weight":3}},{"id":6665,"inV":202,"properties":{"weight":2}},{"id":6666,"inV":5,"properties":{"weight":1}},{"id":6667,"inV":9,"properties":{"weight":2}},{"id":6668,"inV":83,"properties":{"weight":3}},{"id":6669,"inV":3,"properties":{"weight":1}},{"id":6670,"inV":52,"properties":{"weight":1}},{"id":6671,"inV":25,"properties":{"weight":1}},{"
 id":6672,"inV":46,"properties":{"weight":1}},{"id":6673,"inV":123,"properties":{"weight":2}},{"id":6674,"inV":51,"properties":{"weight":4}},{"id":6675,"inV":17,"properties":{"weight":3}},{"id":6676,"inV":56,"properties":{"weight":5}},{"id":6677,"inV":98,"properties":{"weight":5}},{"id":6678,"inV":104,"properties":{"weight":4}},{"id":6679,"inV":69,"properties":{"weight":3}},{"id":6680,"inV":170,"properties":{"weight":2}},{"id":6681,"inV":82,"properties":{"weight":1}},{"id":6682,"inV":80,"properties":{"weight":2}},{"id":6683,"inV":215,"properties":{"weight":1}},{"id":6684,"inV":48,"properties":{"weight":1}},{"id":6685,"inV":14,"properties":{"weight":3}},{"id":6686,"inV":50,"properties":{"weight":2}},{"id":6687,"inV":24,"properties":{"weight":83}},{"id":6688,"inV":18,"properties":{"weight":1}},{"id":6689,"inV":39,"properties":{"weight":6}},{"id":6690,"inV":105,"properties":{"weight":1}},{"id":6691,"inV":131,"properties":{"weight":14}},{"id":6645,"inV":72,"properties":{"weight":7}},{"id
 ":6646,"inV":58,"properties":{"weight":7}},{"id":6647,"inV":57,"properties":{"weight":6}},{"id":6648,"inV":54,"properties":{"weight":8}},{"id":6649,"inV":59,"properties":{"weight":14}},{"id":6650,"inV":100,"properties":{"weight":7}},{"id":6651,"inV":53,"properties":{"weight":4}},{"id":6652,"inV":148,"properties":{"weight":1}},{"id":6653,"inV":218,"properties":{"weight":2}},{"id":6654,"inV":235,"properties":{"weight":2}},{"id":6655,"inV":130,"properties":{"weight":1}}],"sungBy":[{"id":7776,"inV":351}],"writtenBy":[{"id":7775,"inV":659}]},"properties":{"name":[{"id":33,"value":"ME AND MY UNCLE"}],"songType":[{"id":35,"value":"cover"}],"performances":[{"id":34,"value":616}]}}
+{"id":13,"label":"song","inE":{"followedBy":[{"id":4865,"outV":35,"properties":{"weight":4}},{"id":1026,"outV":73,"properties":{"weight":1}},{"id":3330,"outV":155,"properties":{"weight":2}},{"id":5636,"outV":22,"properties":{"weight":1}},{"id":775,"outV":122,"properties":{"weight":1}},{"id":1799,"outV":196,"properties":{"weight":2}},{"id":6407,"outV":134,"properties":{"weight":24}},{"id":9,"outV":9,"properties":{"weight":6}},{"id":4874,"outV":100,"properties":{"weight":6}},{"id":4108,"outV":48,"properties":{"weight":3}},{"id":5132,"outV":222,"properties":{"weight":1}},{"id":2830,"outV":101,"properties":{"weight":8}},{"id":3857,"outV":60,"properties":{"weight":35}},{"id":6931,"outV":84,"properties":{"weight":7}},{"id":533,"outV":120,"properties":{"weight":1}},{"id":6165,"outV":36,"properties":{"weight":1}},{"id":4630,"outV":154,"properties":{"weight":8}},{"id":5142,"outV":125,"properties":{"weight":11}},{"id":283,"outV":5,"properties":{"weight":3}},{"id":1567,"outV":18,"properties":{
 "weight":3}},{"id":1823,"outV":41,"properties":{"weight":4}},{"id":3359,"outV":184,"properties":{"weight":3}},{"id":3617,"outV":24,"properties":{"weight":1}},{"id":3108,"outV":153,"properties":{"weight":1}},{"id":3878,"outV":51,"properties":{"weight":6}},{"id":2347,"outV":87,"properties":{"weight":8}},{"id":6443,"outV":187,"properties":{"weight":47}},{"id":6700,"outV":141,"properties":{"weight":4}},{"id":5682,"outV":167,"properties":{"weight":1}},{"id":53,"outV":46,"properties":{"weight":4}},{"id":823,"outV":171,"properties":{"weight":24}},{"id":4151,"outV":218,"properties":{"weight":2}},{"id":5943,"outV":50,"properties":{"weight":1}},{"id":2617,"outV":158,"properties":{"weight":1}},{"id":3386,"outV":177,"properties":{"weight":2}},{"id":4411,"outV":327,"properties":{"weight":1}},{"id":1852,"outV":94,"properties":{"weight":4}},{"id":6206,"outV":319,"properties":{"weight":1}},{"id":1087,"outV":59,"properties":{"weight":5}},{"id":2111,"outV":17,"properties":{"weight":4}},{"id":4159,"ou
 tV":54,"properties":{"weight":16}},{"id":6723,"outV":53,"properties":{"weight":6}},{"id":6984,"outV":175,"properties":{"weight":1}},{"id":3145,"outV":104,"properties":{"weight":4}},{"id":4947,"outV":86,"properties":{"weight":1}},{"id":5203,"outV":99,"properties":{"weight":2}},{"id":1366,"outV":130,"properties":{"weight":12}},{"id":1622,"outV":210,"properties":{"weight":1}},{"id":2908,"outV":118,"properties":{"weight":1}},{"id":1885,"outV":103,"properties":{"weight":3}},{"id":4959,"outV":207,"properties":{"weight":6}},{"id":3435,"outV":58,"properties":{"weight":8}},{"id":6763,"outV":39,"properties":{"weight":8}},{"id":5741,"outV":129,"properties":{"weight":12}},{"id":366,"outV":74,"properties":{"weight":38}},{"id":2926,"outV":78,"properties":{"weight":3}},{"id":623,"outV":23,"properties":{"weight":1}},{"id":4721,"outV":186,"properties":{"weight":4}},{"id":2165,"outV":151,"properties":{"weight":1}},{"id":886,"outV":140,"properties":{"weight":1}},{"id":3703,"outV":3,"properties":{"weig
 ht":5}},{"id":7031,"outV":89,"properties":{"weight":4}},{"id":1411,"outV":83,"properties":{"weight":7}},{"id":3974,"outV":106,"properties":{"weight":2}},{"id":6278,"outV":49,"properties":{"weight":1}},{"id":912,"outV":91,"properties":{"weight":59}},{"id":2192,"outV":235,"properties":{"weight":1}},{"id":4759,"outV":37,"properties":{"weight":2}},{"id":1179,"outV":26,"properties":{"weight":2}},{"id":5789,"outV":76,"properties":{"weight":3}},{"id":4257,"outV":10,"properties":{"weight":1}},{"id":6561,"outV":172,"properties":{"weight":1}},{"id":4771,"outV":114,"properties":{"weight":3}},{"id":1454,"outV":81,"properties":{"weight":10}},{"id":6073,"outV":72,"properties":{"weight":13}},{"id":5306,"outV":170,"properties":{"weight":4}},{"id":4027,"outV":173,"properties":{"weight":3}},{"id":1725,"outV":82,"properties":{"weight":3}},{"id":960,"outV":67,"properties":{"weight":2}},{"id":1985,"outV":152,"properties":{"weight":1}},{"id":6594,"outV":127,"properties":{"weight":6}},{"id":6342,"outV":21
 ,"properties":{"weight":4}},{"id":455,"outV":139,"properties":{"weight":1}},{"id":3277,"outV":160,"properties":{"weight":3}},{"id":5837,"outV":258,"properties":{"weight":1}},{"id":208,"outV":70,"properties":{"weight":2}},{"id":2256,"outV":29,"properties":{"weight":1}},{"id":721,"outV":80,"properties":{"weight":1}},{"id":2771,"outV":15,"properties":{"weight":3}},{"id":5076,"outV":4,"properties":{"weight":12}},{"id":2519,"outV":57,"properties":{"weight":10}},{"id":4312,"outV":110,"properties":{"weight":1}},{"id":2268,"outV":25,"properties":{"weight":8}},{"id":2014,"outV":149,"properties":{"weight":1}},{"id":3552,"outV":56,"properties":{"weight":8}},{"id":481,"outV":98,"properties":{"weight":3}},{"id":1764,"outV":28,"properties":{"weight":3}},{"id":1258,"outV":27,"properties":{"weight":3}},{"id":1518,"outV":164,"properties":{"weight":1}},{"id":4846,"outV":119,"properties":{"weight":1}},{"id":4593,"outV":85,"properties":{"weight":2}},{"id":244,"outV":150,"properties":{"weight":3}},{"id"
 :1780,"outV":234,"properties":{"weight":2}},{"id":4344,"outV":62,"properties":{"weight":12}},{"id":2044,"outV":92,"properties":{"weight":2}},{"id":5374,"outV":69,"properties":{"weight":34}},{"id":5886,"outV":96,"properties":{"weight":15}}]},"outE":{"followedBy":[{"id":2688,"inV":94,"properties":{"weight":4}},{"id":2689,"inV":130,"properties":{"weight":11}},{"id":2690,"inV":83,"properties":{"weight":13}},{"id":2691,"inV":170,"properties":{"weight":1}},{"id":2692,"inV":51,"properties":{"weight":3}},{"id":2693,"inV":22,"properties":{"weight":2}},{"id":2694,"inV":296,"properties":{"weight":1}},{"id":2695,"inV":52,"properties":{"weight":1}},{"id":2696,"inV":17,"properties":{"weight":2}},{"id":2697,"inV":202,"properties":{"weight":3}},{"id":2698,"inV":27,"properties":{"weight":2}},{"id":2699,"inV":9,"properties":{"weight":3}},{"id":2700,"inV":25,"properties":{"weight":12}},{"id":2701,"inV":195,"properties":{"weight":2}},{"id":2702,"inV":206,"properties":{"weight":1}},{"id":2703,"inV":39,"
 properties":{"weight":1}},{"id":2704,"inV":69,"properties":{"weight":6}},{"id":2705,"inV":24,"properties":{"weight":1}},{"id":2706,"inV":82,"properties":{"weight":3}},{"id":2707,"inV":57,"properties":{"weight":1}},{"id":2708,"inV":134,"properties":{"weight":9}},{"id":2709,"inV":110,"properties":{"weight":1}},{"id":2710,"inV":99,"properties":{"weight":3}},{"id":2711,"inV":76,"properties":{"weight":4}},{"id":2712,"inV":3,"properties":{"weight":3}},{"id":2713,"inV":178,"properties":{"weight":1}},{"id":2714,"inV":184,"properties":{"weight":1}},{"id":2715,"inV":60,"properties":{"weight":21}},{"id":2716,"inV":148,"properties":{"weight":1}},{"id":2717,"inV":32,"properties":{"weight":1}},{"id":2718,"inV":91,"properties":{"weight":42}},{"id":2719,"inV":103,"properties":{"weight":1}},{"id":2720,"inV":114,"properties":{"weight":4}},{"id":2721,"inV":141,"properties":{"weight":4}},{"id":2722,"inV":154,"properties":{"weight":3}},{"id":2723,"inV":109,"properties":{"weight":2}},{"id":2724,"inV":125
 ,"properties":{"weight":9}},{"id":2725,"inV":85,"properties":{"weight":2}},{"id":2726,"inV":84,"properties":{"weight":5}},{"id":2727,"inV":50,"properties":{"weight":1}},{"id":2728,"inV":214,"properties":{"weight":1}},{"id":2729,"inV":72,"properties":{"weight":1}},{"id":2730,"inV":246,"properties":{"weight":1}},{"id":2731,"inV":129,"properties":{"weight":29}},{"id":2732,"inV":65,"properties":{"weight":2}},{"id":2733,"inV":133,"properties":{"weight":1}},{"id":2734,"inV":62,"properties":{"weight":1}},{"id":2735,"inV":29,"properties":{"weight":4}},{"id":2736,"inV":5,"properties":{"weight":3}},{"id":2737,"inV":183,"properties":{"weight":3}},{"id":2738,"inV":210,"properties":{"weight":1}},{"id":2739,"inV":128,"properties":{"weight":1}},{"id":2740,"inV":67,"properties":{"weight":1}},{"id":2741,"inV":212,"properties":{"weight":1}},{"id":2742,"inV":70,"properties":{"weight":2}},{"id":2743,"inV":75,"properties":{"weight":1}},{"id":2744,"inV":71,"properties":{"weight":1}},{"id":2745,"inV":168,
 "properties":{"weight":2}},{"id":2746,"inV":157,"properties":{"weight":1}},{"id":2747,"inV":92,"properties":{"weight":1}},{"id":2748,"inV":89,"properties":{"weight":5}},{"id":2749,"inV":81,"properties":{"weight":1}},{"id":2750,"inV":187,"properties":{"weight":1}},{"id":2751,"inV":164,"properties":{"weight":1}},{"id":2752,"inV":136,"properties":{"weight":1}},{"id":2753,"inV":46,"properties":{"weight":1}},{"id":2660,"inV":207,"properties":{"weight":3}},{"id":2661,"inV":122,"properties":{"weight":17}},{"id":2662,"inV":96,"properties":{"weight":157}},{"id":2663,"inV":104,"properties":{"weight":1}},{"id":2664,"inV":26,"properties":{"weight":14}},{"id":2665,"inV":123,"properties":{"weight":3}},{"id":2666,"inV":19,"properties":{"weight":12}},{"id":2667,"inV":100,"properties":{"weight":5}},{"id":2668,"inV":12,"properties":{"weight":3}},{"id":2669,"inV":49,"properties":{"weight":12}},{"id":2670,"inV":21,"properties":{"weight":4}},{"id":2671,"inV":120,"properties":{"weight":9}},{"id":2672,"in
 V":23,"properties":{"weight":5}},{"id":2673,"inV":59,"properties":{"weight":6}},{"id":2674,"inV":54,"properties":{"weight":5}},{"id":2675,"inV":80,"properties":{"weight":1}},{"id":2676,"inV":234,"properties":{"weight":1}},{"id":2677,"inV":53,"properties":{"weight":2}},{"id":2678,"inV":225,"properties":{"weight":1}},{"id":2679,"inV":235,"properties":{"weight":2}},{"id":2680,"inV":160,"properties":{"weight":3}},{"id":2681,"inV":56,"properties":{"weight":3}},{"id":2682,"inV":127,"properties":{"weight":6}},{"id":2683,"inV":18,"properties":{"weight":3}},{"id":2684,"inV":4,"properties":{"weight":9}},{"id":2685,"inV":15,"properties":{"weight":7}},{"id":2686,"inV":74,"properties":{"weight":86}},{"id":2687,"inV":153,"properties":{"weight":12}}],"sungBy":[{"id":7292,"inV":359}],"writtenBy":[{"id":7291,"inV":339}]},"properties":{"name":[{"id":36,"value":"PLAYING IN THE BAND"}],"songType":[{"id":38,"value":"original"}],"performances":[{"id":37,"value":582}]}}
+{"id":14,"label":"song","inE":{"followedBy":[{"id":6784,"outV":39,"properties":{"weight":10}},{"id":5251,"outV":32,"properties":{"weight":1}},{"id":4229,"outV":52,"properties":{"weight":3}},{"id":4745,"outV":294,"properties":{"weight":4}},{"id":10,"outV":9,"properties":{"weight":3}},{"id":6283,"outV":49,"properties":{"weight":2}},{"id":4364,"outV":62,"properties":{"weight":16}},{"id":4109,"outV":48,"properties":{"weight":10}},{"id":6544,"outV":55,"properties":{"weight":1}},{"id":4881,"outV":100,"properties":{"weight":20}},{"id":6034,"outV":115,"properties":{"weight":1}},{"id":531,"outV":120,"properties":{"weight":1}},{"id":3219,"outV":63,"properties":{"weight":2}},{"id":4758,"outV":37,"properties":{"weight":2}},{"id":4247,"outV":10,"properties":{"weight":1}},{"id":4631,"outV":154,"properties":{"weight":6}},{"id":3866,"outV":60,"properties":{"weight":2}},{"id":1947,"outV":148,"properties":{"weight":1}},{"id":1436,"outV":83,"properties":{"weight":7}},{"id":2844,"outV":101,"properties"
 :{"weight":1}},{"id":6685,"outV":12,"properties":{"weight":3}},{"id":1183,"outV":26,"properties":{"weight":2}},{"id":160,"outV":108,"properties":{"weight":2}},{"id":4517,"outV":105,"properties":{"weight":6}},{"id":6954,"outV":84,"properties":{"weight":4}},{"id":1451,"outV":81,"properties":{"weight":12}},{"id":1582,"outV":18,"properties":{"weight":4}},{"id":3892,"outV":51,"properties":{"weight":10}},{"id":2107,"outV":17,"properties":{"weight":19}},{"id":5820,"outV":76,"properties":{"weight":1}},{"id":6463,"outV":187,"properties":{"weight":26}},{"id":1090,"outV":59,"properties":{"weight":7}},{"id":1731,"outV":82,"properties":{"weight":4}},{"id":6083,"outV":72,"properties":{"weight":9}},{"id":4037,"outV":173,"properties":{"weight":1}},{"id":2375,"outV":87,"properties":{"weight":8}},{"id":4169,"outV":54,"properties":{"weight":36}},{"id":5578,"outV":42,"properties":{"weight":1}},{"id":716,"outV":80,"properties":{"weight":10}},{"id":5964,"outV":50,"properties":{"weight":2}},{"id":845,"out
 V":171,"properties":{"weight":11}},{"id":5709,"outV":20,"properties":{"weight":1}},{"id":5838,"outV":258,"properties":{"weight":1}},{"id":1232,"outV":248,"properties":{"weight":1}},{"id":6993,"outV":175,"properties":{"weight":1}},{"id":3666,"outV":24,"properties":{"weight":2}},{"id":3156,"outV":104,"properties":{"weight":6}},{"id":3796,"outV":88,"properties":{"weight":1}},{"id":6742,"outV":53,"properties":{"weight":15}},{"id":2523,"outV":57,"properties":{"weight":9}},{"id":864,"outV":189,"properties":{"weight":2}},{"id":3556,"outV":56,"properties":{"weight":21}},{"id":102,"outV":46,"properties":{"weight":1}},{"id":5096,"outV":4,"properties":{"weight":2}},{"id":489,"outV":98,"properties":{"weight":3}},{"id":1257,"outV":27,"properties":{"weight":19}},{"id":2030,"outV":180,"properties":{"weight":2}},{"id":2159,"outV":151,"properties":{"weight":1}},{"id":2803,"outV":15,"properties":{"weight":4}},{"id":2935,"outV":78,"properties":{"weight":1}},{"id":2426,"outV":68,"properties":{"weight":
 4}},{"id":3962,"outV":106,"properties":{"weight":2}},{"id":4474,"outV":202,"properties":{"weight":1}},{"id":123,"outV":97,"properties":{"weight":1}},{"id":4092,"outV":109,"properties":{"weight":1}},{"id":5628,"outV":22,"properties":{"weight":1}},{"id":1021,"outV":73,"properties":{"weight":20}},{"id":3455,"outV":58,"properties":{"weight":12}}]},"outE":{"followedBy":[{"id":2981,"inV":50,"properties":{"weight":2}},{"id":2982,"inV":4,"properties":{"weight":3}},{"id":2983,"inV":53,"properties":{"weight":8}},{"id":2984,"inV":57,"properties":{"weight":55}},{"id":2985,"inV":89,"properties":{"weight":2}},{"id":2986,"inV":122,"properties":{"weight":1}},{"id":2987,"inV":153,"properties":{"weight":1}},{"id":2988,"inV":72,"properties":{"weight":26}},{"id":2989,"inV":19,"properties":{"weight":17}},{"id":2990,"inV":9,"properties":{"weight":4}},{"id":2991,"inV":17,"properties":{"weight":13}},{"id":2992,"inV":46,"properties":{"weight":5}},{"id":2993,"inV":51,"properties":{"weight":15}},{"id":2994,"i
 nV":54,"properties":{"weight":28}},{"id":2995,"inV":202,"properties":{"weight":3}},{"id":2996,"inV":27,"properties":{"weight":6}},{"id":2997,"inV":52,"properties":{"weight":3}},{"id":2998,"inV":58,"properties":{"weight":1}},{"id":2999,"inV":56,"properties":{"weight":8}},{"id":3000,"inV":100,"properties":{"weight":12}},{"id":3001,"inV":99,"properties":{"weight":26}},{"id":3002,"inV":98,"properties":{"weight":3}},{"id":3003,"inV":104,"properties":{"weight":2}},{"id":3004,"inV":82,"properties":{"weight":6}},{"id":3005,"inV":215,"properties":{"weight":1}},{"id":3006,"inV":69,"properties":{"weight":2}},{"id":3007,"inV":103,"properties":{"weight":1}},{"id":3008,"inV":83,"properties":{"weight":8}},{"id":3009,"inV":101,"properties":{"weight":1}},{"id":3010,"inV":80,"properties":{"weight":8}},{"id":3011,"inV":121,"properties":{"weight":3}},{"id":3012,"inV":59,"properties":{"weight":1}},{"id":3013,"inV":26,"properties":{"weight":2}},{"id":3014,"inV":32,"properties":{"weight":2}},{"id":3015,"i
 nV":155,"properties":{"weight":1}},{"id":3016,"inV":42,"properties":{"weight":2}},{"id":3017,"inV":18,"properties":{"weight":1}},{"id":3018,"inV":105,"properties":{"weight":11}},{"id":3019,"inV":12,"properties":{"weight":1}},{"id":3020,"inV":49,"properties":{"weight":27}},{"id":3021,"inV":65,"properties":{"weight":2}},{"id":3022,"inV":85,"properties":{"weight":2}},{"id":3023,"inV":73,"properties":{"weight":8}},{"id":3024,"inV":106,"properties":{"weight":3}},{"id":3025,"inV":189,"properties":{"weight":3}},{"id":3026,"inV":10,"properties":{"weight":1}},{"id":3027,"inV":210,"properties":{"weight":3}},{"id":3028,"inV":76,"properties":{"weight":1}},{"id":3029,"inV":87,"properties":{"weight":1}},{"id":3030,"inV":96,"properties":{"weight":1}},{"id":3031,"inV":150,"properties":{"weight":1}},{"id":3032,"inV":66,"properties":{"weight":1}},{"id":3033,"inV":5,"properties":{"weight":1}},{"id":3034,"inV":91,"properties":{"weight":29}},{"id":3035,"inV":60,"properties":{"weight":6}},{"id":3036,"inV
 ":67,"properties":{"weight":1}},{"id":3037,"inV":74,"properties":{"weight":1}},{"id":3038,"inV":21,"properties":{"weight":1}},{"id":3039,"inV":169,"properties":{"weight":1}},{"id":3040,"inV":62,"properties":{"weight":1}},{"id":3041,"inV":39,"properties":{"weight":2}},{"id":3042,"inV":175,"properties":{"weight":1}},{"id":3043,"inV":172,"properties":{"weight":1}},{"id":3044,"inV":28,"properties":{"weight":5}},{"id":3045,"inV":173,"properties":{"weight":1}},{"id":3046,"inV":37,"properties":{"weight":5}},{"id":3047,"inV":35,"properties":{"weight":2}}],"sungBy":[{"id":7232,"inV":351}],"writtenBy":[{"id":7231,"inV":350}]},"properties":{"name":[{"id":39,"value":"LOOKS LIKE RAIN"}],"songType":[{"id":41,"value":"original"}],"performances":[{"id":40,"value":417}]}}
+{"id":15,"label":"song","inE":{"followedBy":[{"id":1152,"outV":26,"properties":{"weight":1}},{"id":769,"outV":122,"properties":{"weight":3}},{"id":5379,"outV":69,"properties":{"weight":4}},{"id":3844,"outV":60,"properties":{"weight":2}},{"id":1414,"outV":83,"properties":{"weight":2}},{"id":6663,"outV":12,"properties":{"weight":167}},{"id":4872,"outV":100,"properties":{"weight":9}},{"id":4105,"outV":48,"properties":{"weight":4}},{"id":11,"outV":9,"properties":{"weight":3}},{"id":4622,"outV":154,"properties":{"weight":1}},{"id":2833,"outV":101,"properties":{"weight":1}},{"id":2195,"outV":235,"properties":{"weight":1}},{"id":5141,"outV":125,"properties":{"weight":2}},{"id":3224,"outV":63,"properties":{"weight":2}},{"id":1945,"outV":148,"properties":{"weight":2}},{"id":5024,"outV":30,"properties":{"weight":2}},{"id":2597,"outV":112,"properties":{"weight":35}},{"id":1062,"outV":73,"properties":{"weight":1}},{"id":4776,"outV":114,"properties":{"weight":1}},{"id":5032,"outV":47,"properties
 ":{"weight":1}},{"id":6698,"outV":141,"properties":{"weight":1}},{"id":3885,"outV":51,"properties":{"weight":14}},{"id":1712,"outV":82,"properties":{"weight":4}},{"id":5301,"outV":170,"properties":{"weight":1}},{"id":1847,"outV":94,"properties":{"weight":6}},{"id":4153,"outV":54,"properties":{"weight":7}},{"id":1339,"outV":31,"properties":{"weight":2}},{"id":6075,"outV":72,"properties":{"weight":4}},{"id":60,"outV":46,"properties":{"weight":1}},{"id":2108,"outV":17,"properties":{"weight":8}},{"id":6460,"outV":187,"properties":{"weight":10}},{"id":3653,"outV":24,"properties":{"weight":14}},{"id":3147,"outV":104,"properties":{"weight":2}},{"id":6731,"outV":53,"properties":{"weight":1}},{"id":1101,"outV":59,"properties":{"weight":2}},{"id":4052,"outV":173,"properties":{"weight":1}},{"id":2518,"outV":57,"properties":{"weight":5}},{"id":476,"outV":98,"properties":{"weight":3}},{"id":1372,"outV":130,"properties":{"weight":1}},{"id":1245,"outV":27,"properties":{"weight":5}},{"id":5085,"out
 V":4,"properties":{"weight":1}},{"id":2272,"outV":25,"properties":{"weight":4}},{"id":4577,"outV":254,"properties":{"weight":1}},{"id":5735,"outV":129,"properties":{"weight":2}},{"id":3432,"outV":58,"properties":{"weight":7}},{"id":746,"outV":80,"properties":{"weight":1}},{"id":3562,"outV":56,"properties":{"weight":6}},{"id":2411,"outV":68,"properties":{"weight":1}},{"id":2924,"outV":78,"properties":{"weight":3}},{"id":4467,"outV":202,"properties":{"weight":6}},{"id":376,"outV":74,"properties":{"weight":1}},{"id":5242,"outV":32,"properties":{"weight":2}},{"id":6267,"outV":49,"properties":{"weight":1}},{"id":2685,"outV":13,"properties":{"weight":7}}]},"outE":{"followedBy":[{"id":2816,"inV":103,"properties":{"weight":1}},{"id":2817,"inV":62,"properties":{"weight":1}},{"id":2818,"inV":64,"properties":{"weight":1}},{"id":2819,"inV":75,"properties":{"weight":3}},{"id":2820,"inV":152,"properties":{"weight":1}},{"id":2821,"inV":117,"properties":{"weight":1}},{"id":2822,"inV":168,"propertie
 s":{"weight":1}},{"id":2823,"inV":188,"properties":{"weight":1}},{"id":2824,"inV":131,"properties":{"weight":4}},{"id":2825,"inV":28,"properties":{"weight":1}},{"id":2826,"inV":124,"properties":{"weight":1}},{"id":2827,"inV":190,"properties":{"weight":1}},{"id":2828,"inV":137,"properties":{"weight":1}},{"id":2755,"inV":19,"properties":{"weight":8}},{"id":2756,"inV":56,"properties":{"weight":22}},{"id":2757,"inV":104,"properties":{"weight":17}},{"id":2758,"inV":49,"properties":{"weight":4}},{"id":2759,"inV":122,"properties":{"weight":3}},{"id":2760,"inV":23,"properties":{"weight":2}},{"id":2761,"inV":27,"properties":{"weight":23}},{"id":2762,"inV":89,"properties":{"weight":7}},{"id":2763,"inV":46,"properties":{"weight":1}},{"id":2764,"inV":57,"properties":{"weight":7}},{"id":2765,"inV":59,"properties":{"weight":6}},{"id":2766,"inV":58,"properties":{"weight":18}},{"id":2767,"inV":54,"properties":{"weight":25}},{"id":2768,"inV":100,"properties":{"weight":24}},{"id":2769,"inV":39,"prope
 rties":{"weight":3}},{"id":2770,"inV":160,"properties":{"weight":5}},{"id":2771,"inV":13,"properties":{"weight":3}},{"id":2772,"inV":51,"properties":{"weight":14}},{"id":2773,"inV":94,"properties":{"weight":4}},{"id":2774,"inV":148,"properties":{"weight":1}},{"id":2775,"inV":9,"properties":{"weight":5}},{"id":2776,"inV":48,"properties":{"weight":17}},{"id":2777,"inV":55,"properties":{"weight":1}},{"id":2778,"inV":72,"properties":{"weight":3}},{"id":2779,"inV":52,"properties":{"weight":1}},{"id":2780,"inV":12,"properties":{"weight":3}},{"id":2781,"inV":4,"properties":{"weight":4}},{"id":2782,"inV":83,"properties":{"weight":2}},{"id":2783,"inV":202,"properties":{"weight":6}},{"id":2784,"inV":82,"properties":{"weight":3}},{"id":2785,"inV":74,"properties":{"weight":1}},{"id":2786,"inV":69,"properties":{"weight":7}},{"id":2787,"inV":98,"properties":{"weight":10}},{"id":2788,"inV":21,"properties":{"weight":1}},{"id":2789,"inV":125,"properties":{"weight":1}},{"id":2790,"inV":170,"propertie
 s":{"weight":3}},{"id":2791,"inV":26,"properties":{"weight":1}},{"id":2792,"inV":60,"properties":{"weight":1}},{"id":2793,"inV":294,"properties":{"weight":2}},{"id":2794,"inV":99,"properties":{"weight":3}},{"id":2795,"inV":17,"properties":{"weight":10}},{"id":2796,"inV":63,"properties":{"weight":5}},{"id":2797,"inV":68,"properties":{"weight":3}},{"id":2798,"inV":108,"properties":{"weight":6}},{"id":2799,"inV":109,"properties":{"weight":1}},{"id":2800,"inV":196,"properties":{"weight":3}},{"id":2801,"inV":91,"properties":{"weight":1}},{"id":2802,"inV":18,"properties":{"weight":1}},{"id":2803,"inV":14,"properties":{"weight":4}},{"id":2804,"inV":105,"properties":{"weight":8}},{"id":2805,"inV":101,"properties":{"weight":2}},{"id":2806,"inV":10,"properties":{"weight":2}},{"id":2807,"inV":73,"properties":{"weight":26}},{"id":2808,"inV":78,"properties":{"weight":1}},{"id":2809,"inV":32,"properties":{"weight":3}},{"id":2810,"inV":106,"properties":{"weight":2}},{"id":2811,"inV":180,"propertie
 s":{"weight":2}},{"id":2812,"inV":88,"properties":{"weight":1}},{"id":2813,"inV":97,"properties":{"weight":1}},{"id":2814,"inV":53,"properties":{"weight":3}},{"id":2815,"inV":115,"properties":{"weight":4}}],"sungBy":[{"id":7472,"inV":351}],"writtenBy":[{"id":7471,"inV":479}]},"properties":{"name":[{"id":42,"value":"BIG RIVER"}],"songType":[{"id":44,"value":"cover"}],"performances":[{"id":43,"value":397}]}}
+{"id":16,"label":"song","inE":{"followedBy":[{"id":7008,"outV":89,"properties":{"weight":1}},{"id":6467,"outV":187,"properties":{"weight":1}},{"id":4101,"outV":48,"properties":{"weight":1}},{"id":5637,"outV":22,"properties":{"weight":3}},{"id":6341,"outV":21,"properties":{"weight":1}},{"id":5382,"outV":69,"properties":{"weight":4}},{"id":3273,"outV":160,"properties":{"weight":2}},{"id":6537,"outV":55,"properties":{"weight":1}},{"id":3882,"outV":51,"properties":{"weight":12}},{"id":12,"outV":9,"properties":{"weight":1}},{"id":1260,"outV":27,"properties":{"weight":1}},{"id":4172,"outV":54,"properties":{"weight":1}},{"id":6285,"outV":49,"properties":{"weight":1}},{"id":368,"outV":74,"properties":{"weight":1}},{"id":4464,"outV":202,"properties":{"weight":1}},{"id":468,"outV":195,"properties":{"weight":3}},{"id":5303,"outV":170,"properties":{"weight":2}},{"id":472,"outV":98,"properties":{"weight":2}},{"id":2521,"outV":57,"properties":{"weight":1}},{"id":5081,"outV":4,"properties":{"weigh
 t":2}},{"id":5146,"outV":125,"properties":{"weight":1}},{"id":1405,"outV":83,"properties":{"weight":5}},{"id":1854,"outV":94,"properties":{"weight":2}},{"id":1950,"outV":148,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":2169,"inV":25,"properties":{"weight":1}},{"id":2170,"inV":101,"properties":{"weight":46}},{"id":2171,"inV":89,"properties":{"weight":2}},{"id":2172,"inV":130,"properties":{"weight":1}},{"id":2173,"inV":83,"properties":{"weight":1}}]},"properties":{"name":[{"id":45,"value":"WEATHER REPORT SUITE"}],"songType":[{"id":47,"value":""}],"performances":[{"id":46,"value":0}]}}
+{"id":17,"label":"song","inE":{"followedBy":[{"id":5955,"outV":50,"properties":{"weight":43}},{"id":5702,"outV":20,"properties":{"weight":2}},{"id":2696,"outV":13,"properties":{"weight":2}},{"id":6538,"outV":55,"properties":{"weight":1}},{"id":1163,"outV":26,"properties":{"weight":34}},{"id":13,"outV":9,"properties":{"weight":1}},{"id":402,"outV":38,"properties":{"weight":12}},{"id":5011,"outV":30,"properties":{"weight":3}},{"id":6675,"outV":12,"properties":{"weight":3}},{"id":1877,"outV":103,"properties":{"weight":2}},{"id":2522,"outV":57,"properties":{"weight":1}},{"id":475,"outV":98,"properties":{"weight":1}},{"id":3803,"outV":88,"properties":{"weight":4}},{"id":540,"outV":120,"properties":{"weight":1}},{"id":2588,"outV":112,"properties":{"weight":3}},{"id":3996,"outV":106,"properties":{"weight":1}},{"id":990,"outV":11,"properties":{"weight":3}},{"id":1570,"outV":18,"properties":{"weight":6}},{"id":2275,"outV":25,"properties":{"weight":1}},{"id":4262,"outV":10,"properties":{"weig
 ht":5}},{"id":2795,"outV":15,"properties":{"weight":10}},{"id":6955,"outV":84,"properties":{"weight":1}},{"id":2413,"outV":68,"properties":{"weight":9}},{"id":4077,"outV":109,"properties":{"weight":1}},{"id":2991,"outV":14,"properties":{"weight":13}},{"id":4912,"outV":100,"properties":{"weight":1}},{"id":3639,"outV":24,"properties":{"weight":13}},{"id":6583,"outV":116,"properties":{"weight":1}},{"id":58,"outV":46,"properties":{"weight":2}},{"id":635,"outV":23,"properties":{"weight":16}},{"id":5244,"outV":32,"properties":{"weight":19}},{"id":2942,"outV":78,"properties":{"weight":1}},{"id":6847,"outV":64,"properties":{"weight":7}}]},"outE":{"followedBy":[{"id":2112,"inV":24,"properties":{"weight":9}},{"id":2113,"inV":21,"properties":{"weight":1}},{"id":2114,"inV":46,"properties":{"weight":1}},{"id":2115,"inV":20,"properties":{"weight":2}},{"id":2116,"inV":10,"properties":{"weight":7}},{"id":2117,"inV":68,"properties":{"weight":25}},{"id":2118,"inV":32,"properties":{"weight":19}},{"id"
 :2119,"inV":103,"properties":{"weight":3}},{"id":2120,"inV":121,"properties":{"weight":3}},{"id":2121,"inV":112,"properties":{"weight":31}},{"id":2122,"inV":85,"properties":{"weight":1}},{"id":2123,"inV":101,"properties":{"weight":1}},{"id":2124,"inV":109,"properties":{"weight":1}},{"id":2125,"inV":73,"properties":{"weight":1}},{"id":2126,"inV":88,"properties":{"weight":8}},{"id":2127,"inV":111,"properties":{"weight":3}},{"id":2128,"inV":54,"properties":{"weight":2}},{"id":2129,"inV":97,"properties":{"weight":2}},{"id":2130,"inV":100,"properties":{"weight":1}},{"id":2131,"inV":42,"properties":{"weight":1}},{"id":2132,"inV":58,"properties":{"weight":2}},{"id":2133,"inV":244,"properties":{"weight":1}},{"id":2134,"inV":56,"properties":{"weight":1}},{"id":2135,"inV":63,"properties":{"weight":1}},{"id":2136,"inV":188,"properties":{"weight":2}},{"id":2137,"inV":71,"properties":{"weight":1}},{"id":2138,"inV":30,"properties":{"weight":2}},{"id":2139,"inV":31,"properties":{"weight":1}},{"id"
 :2140,"inV":77,"properties":{"weight":2}},{"id":2141,"inV":40,"properties":{"weight":1}},{"id":2142,"inV":33,"properties":{"weight":1}},{"id":2103,"inV":18,"properties":{"weight":17}},{"id":2104,"inV":39,"properties":{"weight":2}},{"id":2105,"inV":22,"properties":{"weight":4}},{"id":2106,"inV":50,"properties":{"weight":6}},{"id":2107,"inV":14,"properties":{"weight":19}},{"id":2108,"inV":15,"properties":{"weight":8}},{"id":2109,"inV":12,"properties":{"weight":24}},{"id":2110,"inV":23,"properties":{"weight":2}},{"id":2111,"inV":13,"properties":{"weight":4}}],"sungBy":[{"id":7364,"inV":340}],"writtenBy":[{"id":7363,"inV":339}]},"properties":{"name":[{"id":48,"value":"THEY LOVE EACH OTHER"}],"songType":[{"id":50,"value":"original"}],"performances":[{"id":49,"value":227}]}}
+{"id":18,"label":"song","inE":{"followedBy":[{"id":1024,"outV":73,"properties":{"weight":4}},{"id":4097,"outV":48,"properties":{"weight":13}},{"id":6276,"outV":49,"properties":{"weight":2}},{"id":2309,"outV":25,"properties":{"weight":1}},{"id":3333,"outV":155,"properties":{"weight":1}},{"id":4231,"outV":52,"properties":{"weight":1}},{"id":4360,"outV":62,"properties":{"weight":1}},{"id":3849,"outV":60,"properties":{"weight":1}},{"id":5257,"outV":32,"properties":{"weight":3}},{"id":5385,"outV":69,"properties":{"weight":2}},{"id":2189,"outV":235,"properties":{"weight":1}},{"id":14,"outV":9,"properties":{"weight":5}},{"id":654,"outV":23,"properties":{"weight":1}},{"id":5010,"outV":30,"properties":{"weight":2}},{"id":6546,"outV":55,"properties":{"weight":1}},{"id":4885,"outV":100,"properties":{"weight":11}},{"id":1814,"outV":273,"properties":{"weight":1}},{"id":1943,"outV":148,"properties":{"weight":1}},{"id":5145,"outV":125,"properties":{"weight":1}},{"id":6688,"outV":12,"properties":{"
 weight":1}},{"id":4642,"outV":154,"properties":{"weight":3}},{"id":2852,"outV":101,"properties":{"weight":1}},{"id":4260,"outV":10,"properties":{"weight":3}},{"id":3238,"outV":63,"properties":{"weight":1}},{"id":6695,"outV":141,"properties":{"weight":1}},{"id":3880,"outV":51,"properties":{"weight":12}},{"id":425,"outV":38,"properties":{"weight":2}},{"id":1193,"outV":26,"properties":{"weight":1}},{"id":2601,"outV":112,"properties":{"weight":1}},{"id":4524,"outV":105,"properties":{"weight":3}},{"id":45,"outV":46,"properties":{"weight":3}},{"id":4015,"outV":292,"properties":{"weight":1}},{"id":560,"outV":120,"properties":{"weight":1}},{"id":5299,"outV":170,"properties":{"weight":3}},{"id":6579,"outV":116,"properties":{"weight":1}},{"id":1716,"outV":82,"properties":{"weight":3}},{"id":4404,"outV":40,"properties":{"weight":1}},{"id":5429,"outV":315,"properties":{"weight":1}},{"id":4150,"outV":218,"properties":{"weight":1}},{"id":2103,"outV":17,"properties":{"weight":17}},{"id":4152,"outV
 ":54,"properties":{"weight":18}},{"id":6456,"outV":187,"properties":{"weight":8}},{"id":1849,"outV":94,"properties":{"weight":6}},{"id":827,"outV":171,"properties":{"weight":1}},{"id":6715,"outV":53,"properties":{"weight":6}},{"id":6205,"outV":319,"properties":{"weight":1}},{"id":1086,"outV":59,"properties":{"weight":21}},{"id":5439,"outV":239,"properties":{"weight":1}},{"id":6080,"outV":72,"properties":{"weight":3}},{"id":1986,"outV":152,"properties":{"weight":1}},{"id":3270,"outV":160,"properties":{"weight":1}},{"id":5192,"outV":99,"properties":{"weight":1}},{"id":3017,"outV":14,"properties":{"weight":1}},{"id":1356,"outV":31,"properties":{"weight":1}},{"id":3148,"outV":104,"properties":{"weight":19}},{"id":4044,"outV":173,"properties":{"weight":4}},{"id":5073,"outV":4,"properties":{"weight":4}},{"id":4692,"outV":33,"properties":{"weight":1}},{"id":5716,"outV":20,"properties":{"weight":1}},{"id":2517,"outV":57,"properties":{"weight":11}},{"id":5973,"outV":50,"properties":{"weight"
 :5}},{"id":3671,"outV":24,"properties":{"weight":3}},{"id":473,"outV":98,"properties":{"weight":6}},{"id":729,"outV":80,"properties":{"weight":5}},{"id":5850,"outV":61,"properties":{"weight":1}},{"id":1244,"outV":27,"properties":{"weight":16}},{"id":3807,"outV":88,"properties":{"weight":1}},{"id":3553,"outV":56,"properties":{"weight":16}},{"id":866,"outV":189,"properties":{"weight":1}},{"id":5602,"outV":42,"properties":{"weight":1}},{"id":355,"outV":74,"properties":{"weight":1}},{"id":3431,"outV":58,"properties":{"weight":8}},{"id":4967,"outV":207,"properties":{"weight":1}},{"id":7016,"outV":89,"properties":{"weight":3}},{"id":1642,"outV":213,"properties":{"weight":1}},{"id":2029,"outV":180,"properties":{"weight":1}},{"id":6765,"outV":39,"properties":{"weight":7}},{"id":6384,"outV":65,"properties":{"weight":1}},{"id":2802,"outV":15,"properties":{"weight":1}},{"id":3315,"outV":252,"properties":{"weight":1}},{"id":4851,"outV":119,"properties":{"weight":1}},{"id":3064,"outV":153,"prope
 rties":{"weight":2}},{"id":1401,"outV":190,"properties":{"weight":2}},{"id":2683,"outV":13,"properties":{"weight":3}},{"id":4476,"outV":202,"properties":{"weight":3}},{"id":2431,"outV":68,"properties":{"weight":3}}]},"outE":{"followedBy":[{"id":1536,"inV":59,"properties":{"weight":5}},{"id":1537,"inV":19,"properties":{"weight":17}},{"id":1538,"inV":100,"properties":{"weight":16}},{"id":1539,"inV":122,"properties":{"weight":6}},{"id":1540,"inV":46,"properties":{"weight":4}},{"id":1541,"inV":47,"properties":{"weight":1}},{"id":1542,"inV":74,"properties":{"weight":1}},{"id":1543,"inV":53,"properties":{"weight":7}},{"id":1544,"inV":94,"properties":{"weight":2}},{"id":1545,"inV":58,"properties":{"weight":13}},{"id":1546,"inV":57,"properties":{"weight":10}},{"id":1547,"inV":25,"properties":{"weight":1}},{"id":1548,"inV":39,"properties":{"weight":3}},{"id":1549,"inV":54,"properties":{"weight":29}},{"id":1550,"inV":120,"properties":{"weight":1}},{"id":1551,"inV":152,"properties":{"weight":1
 }},{"id":1552,"inV":89,"properties":{"weight":3}},{"id":1553,"inV":148,"properties":{"weight":1}},{"id":1554,"inV":252,"properties":{"weight":1}},{"id":1555,"inV":225,"properties":{"weight":1}},{"id":1556,"inV":80,"properties":{"weight":2}},{"id":1557,"inV":56,"properties":{"weight":11}},{"id":1558,"inV":27,"properties":{"weight":16}},{"id":1559,"inV":26,"properties":{"weight":1}},{"id":1560,"inV":206,"properties":{"weight":1}},{"id":1561,"inV":72,"properties":{"weight":5}},{"id":1562,"inV":23,"properties":{"weight":3}},{"id":1563,"inV":49,"properties":{"weight":3}},{"id":1564,"inV":51,"properties":{"weight":26}},{"id":1565,"inV":55,"properties":{"weight":2}},{"id":1566,"inV":202,"properties":{"weight":6}},{"id":1567,"inV":13,"properties":{"weight":3}},{"id":1568,"inV":83,"properties":{"weight":4}},{"id":1569,"inV":160,"properties":{"weight":2}},{"id":1570,"inV":17,"properties":{"weight":6}},{"id":1571,"inV":10,"properties":{"weight":5}},{"id":1572,"inV":9,"properties":{"weight":3}}
 ,{"id":1573,"inV":125,"properties":{"weight":2}},{"id":1574,"inV":98,"properties":{"weight":4}},{"id":1575,"inV":170,"properties":{"weight":5}},{"id":1576,"inV":69,"properties":{"weight":3}},{"id":1577,"inV":21,"properties":{"weight":1}},{"id":1578,"inV":82,"properties":{"weight":2}},{"id":1579,"inV":196,"properties":{"weight":1}},{"id":1580,"inV":104,"properties":{"weight":9}},{"id":1581,"inV":108,"properties":{"weight":4}},{"id":1582,"inV":14,"properties":{"weight":4}},{"id":1583,"inV":32,"properties":{"weight":4}},{"id":1584,"inV":50,"properties":{"weight":1}},{"id":1585,"inV":48,"properties":{"weight":7}},{"id":1586,"inV":101,"properties":{"weight":1}},{"id":1587,"inV":105,"properties":{"weight":5}},{"id":1588,"inV":208,"properties":{"weight":1}},{"id":1589,"inV":103,"properties":{"weight":2}},{"id":1590,"inV":42,"properties":{"weight":1}},{"id":1591,"inV":63,"properties":{"weight":2}},{"id":1592,"inV":24,"properties":{"weight":2}},{"id":1593,"inV":73,"properties":{"weight":7}},
 {"id":1594,"inV":222,"properties":{"weight":1}},{"id":1595,"inV":106,"properties":{"weight":1}},{"id":1596,"inV":189,"properties":{"weight":2}},{"id":1597,"inV":112,"properties":{"weight":1}},{"id":1598,"inV":68,"properties":{"weight":2}},{"id":1599,"inV":121,"properties":{"weight":1}},{"id":1600,"inV":180,"properties":{"weight":2}},{"id":1601,"inV":199,"properties":{"weight":1}},{"id":1602,"inV":88,"properties":{"weight":2}},{"id":1603,"inV":128,"properties":{"weight":1}},{"id":1604,"inV":60,"properties":{"weight":1}},{"id":1605,"inV":12,"properties":{"weight":1}},{"id":1606,"inV":75,"properties":{"weight":2}},{"id":1607,"inV":168,"properties":{"weight":1}},{"id":1608,"inV":175,"properties":{"weight":1}},{"id":1609,"inV":254,"properties":{"weight":1}},{"id":1610,"inV":174,"properties":{"weight":4}},{"id":1611,"inV":137,"properties":{"weight":1}},{"id":1612,"inV":173,"properties":{"weight":1}},{"id":1535,"inV":235,"properties":{"weight":1}}],"sungBy":[{"id":7554,"inV":351}],"written
 By":[{"id":7553,"inV":528}]},"properties":{"name":[{"id":51,"value":"EL PASO"}],"songType":[{"id":53,"value":"cover"}],"performances":[{"id":52,"value":388}]}}
+{"id":19,"label":"song","inE":{"followedBy":[{"id":1537,"outV":18,"properties":{"weight":17}},{"id":3969,"outV":106,"properties":{"weight":1}},{"id":6657,"outV":12,"properties":{"weight":3}},{"id":4098,"outV":48,"properties":{"weight":1}},{"id":6532,"outV":242,"properties":{"weight":1}},{"id":1159,"outV":26,"properties":{"weight":21}},{"id":6152,"outV":36,"properties":{"weight":6}},{"id":394,"outV":74,"properties":{"weight":1}},{"id":522,"outV":120,"properties":{"weight":2}},{"id":5130,"outV":222,"properties":{"weight":1}},{"id":3467,"outV":58,"properties":{"weight":8}},{"id":15,"outV":9,"properties":{"weight":1}},{"id":272,"outV":150,"properties":{"weight":1}},{"id":4880,"outV":100,"properties":{"weight":1}},{"id":5267,"outV":32,"properties":{"weight":12}},{"id":4245,"outV":10,"properties":{"weight":9}},{"id":790,"outV":122,"properties":{"weight":1}},{"id":2841,"outV":101,"properties":{"weight":18}},{"id":3097,"outV":153,"properties":{"weight":3}},{"id":411,"outV":38,"properties":{
 "weight":6}},{"id":2335,"outV":290,"properties":{"weight":2}},{"id":5535,"outV":43,"properties":{"weight":1}},{"id":1825,"outV":41,"properties":{"weight":1}},{"id":3874,"outV":60,"properties":{"weight":1}},{"id":4770,"outV":114,"properties":{"weight":4}},{"id":6308,"outV":123,"properties":{"weight":1}},{"id":2086,"outV":188,"properties":{"weight":1}},{"id":2215,"outV":75,"properties":{"weight":1}},{"id":5801,"outV":76,"properties":{"weight":5}},{"id":42,"outV":46,"properties":{"weight":5}},{"id":3628,"outV":24,"properties":{"weight":9}},{"id":2989,"outV":14,"properties":{"weight":17}},{"id":5167,"outV":71,"properties":{"weight":1}},{"id":6831,"outV":64,"properties":{"weight":7}},{"id":2354,"outV":87,"properties":{"weight":2}},{"id":5938,"outV":50,"properties":{"weight":19}},{"id":951,"outV":67,"properties":{"weight":2}},{"id":3511,"outV":223,"properties":{"weight":1}},{"id":1848,"outV":94,"properties":{"weight":1}},{"id":314,"outV":34,"properties":{"weight":2}},{"id":2621,"outV":158
 ,"properties":{"weight":2}},{"id":1472,"outV":81,"properties":{"weight":1}},{"id":6081,"outV":72,"properties":{"weight":24}},{"id":6978,"outV":175,"properties":{"weight":2}},{"id":2755,"outV":15,"properties":{"weight":8}},{"id":5701,"outV":20,"properties":{"weight":4}},{"id":3275,"outV":160,"properties":{"weight":2}},{"id":4171,"outV":54,"properties":{"weight":3}},{"id":206,"outV":70,"properties":{"weight":1}},{"id":4558,"outV":105,"properties":{"weight":1}},{"id":5200,"outV":99,"properties":{"weight":19}},{"id":5457,"outV":79,"properties":{"weight":4}},{"id":979,"outV":11,"properties":{"weight":9}},{"id":1620,"outV":210,"properties":{"weight":4}},{"id":5590,"outV":42,"properties":{"weight":4}},{"id":3799,"outV":88,"properties":{"weight":7}},{"id":4450,"outV":113,"properties":{"weight":1}},{"id":4962,"outV":207,"properties":{"weight":1}},{"id":6370,"outV":21,"properties":{"weight":1}},{"id":1763,"outV":28,"properties":{"weight":1}},{"id":2405,"outV":45,"properties":{"weight":1}},{"i
 d":2279,"outV":25,"properties":{"weight":4}},{"id":2408,"outV":68,"properties":{"weight":5}},{"id":5864,"outV":96,"properties":{"weight":1}},{"id":2666,"outV":13,"properties":{"weight":12}},{"id":1900,"outV":103,"properties":{"weight":22}},{"id":3564,"outV":56,"properties":{"weight":2}},{"id":5102,"outV":4,"properties":{"weight":6}},{"id":1776,"outV":234,"properties":{"weight":7}},{"id":4976,"outV":236,"properties":{"weight":3}},{"id":2546,"outV":57,"properties":{"weight":28}},{"id":627,"outV":23,"properties":{"weight":3}},{"id":4083,"outV":109,"properties":{"weight":4}},{"id":4470,"outV":202,"properties":{"weight":2}},{"id":5622,"outV":22,"properties":{"weight":3}},{"id":6391,"outV":65,"properties":{"weight":2}},{"id":6394,"outV":136,"properties":{"weight":1}},{"id":4349,"outV":62,"properties":{"weight":1}},{"id":126,"outV":97,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":3139,"inV":187,"properties":{"weight":402}},{"id":3140,"inV":39,"properties":{"weight":1}},{"id":314
 1,"inV":60,"properties":{"weight":1}}],"sungBy":[{"id":7100,"inV":340}],"writtenBy":[{"id":7099,"inV":339}]},"properties":{"name":[{"id":54,"value":"CHINA CAT SUNFLOWER"}],"songType":[{"id":56,"value":"original"}],"performances":[{"id":55,"value":554}]}}
+{"id":20,"label":"song","inE":{"followedBy":[{"id":5376,"outV":69,"properties":{"weight":1}},{"id":6592,"outV":116,"properties":{"weight":1}},{"id":2115,"outV":17,"properties":{"weight":2}},{"id":6084,"outV":72,"properties":{"weight":3}},{"id":4170,"outV":54,"properties":{"weight":4}},{"id":2955,"outV":78,"properties":{"weight":1}},{"id":1100,"outV":59,"properties":{"weight":5}},{"id":1164,"outV":26,"properties":{"weight":1}},{"id":2061,"outV":92,"properties":{"weight":1}},{"id":718,"outV":80,"properties":{"weight":2}},{"id":6543,"outV":55,"properties":{"weight":1}},{"id":6735,"outV":53,"properties":{"weight":1}},{"id":16,"outV":9,"properties":{"weight":1}},{"id":1809,"outV":199,"properties":{"weight":1}},{"id":3282,"outV":160,"properties":{"weight":1}},{"id":3609,"outV":56,"properties":{"weight":1}},{"id":1818,"outV":273,"properties":{"weight":1}},{"id":4894,"outV":100,"properties":{"weight":1}},{"id":479,"outV":98,"properties":{"weight":3}},{"id":2527,"outV":57,"properties":{"weig
 ht":3}},{"id":2027,"outV":180,"properties":{"weight":3}},{"id":3883,"outV":51,"properties":{"weight":4}},{"id":2287,"outV":25,"properties":{"weight":1}},{"id":4783,"outV":114,"properties":{"weight":1}},{"id":3442,"outV":58,"properties":{"weight":2}},{"id":4340,"outV":62,"properties":{"weight":1}},{"id":5300,"outV":170,"properties":{"weight":1}},{"id":5047,"outV":209,"properties":{"weight":1}},{"id":56,"outV":46,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":5699,"inV":51,"properties":{"weight":6}},{"id":5700,"inV":100,"properties":{"weight":4}},{"id":5701,"inV":19,"properties":{"weight":4}},{"id":5702,"inV":17,"properties":{"weight":2}},{"id":5703,"inV":56,"properties":{"weight":2}},{"id":5704,"inV":39,"properties":{"weight":1}},{"id":5705,"inV":52,"properties":{"weight":1}},{"id":5706,"inV":94,"properties":{"weight":1}},{"id":5707,"inV":58,"properties":{"weight":3}},{"id":5708,"inV":59,"properties":{"weight":3}},{"id":5709,"inV":14,"properties":{"weight":1}},{"id":5710,"i
 nV":55,"properties":{"weight":1}},{"id":5711,"inV":47,"properties":{"weight":1}},{"id":5712,"inV":27,"properties":{"weight":1}},{"id":5713,"inV":82,"properties":{"weight":1}},{"id":5714,"inV":83,"properties":{"weight":1}},{"id":5715,"inV":98,"properties":{"weight":2}},{"id":5716,"inV":18,"properties":{"weight":1}},{"id":5717,"inV":170,"properties":{"weight":2}},{"id":5718,"inV":180,"properties":{"weight":1}},{"id":5719,"inV":273,"properties":{"weight":2}},{"id":5720,"inV":199,"properties":{"weight":1}},{"id":5721,"inV":73,"properties":{"weight":1}},{"id":5722,"inV":197,"properties":{"weight":1}},{"id":5723,"inV":222,"properties":{"weight":1}},{"id":5724,"inV":104,"properties":{"weight":1}},{"id":5725,"inV":118,"properties":{"weight":1}},{"id":5726,"inV":215,"properties":{"weight":1}},{"id":5727,"inV":80,"properties":{"weight":1}},{"id":5728,"inV":173,"properties":{"weight":1}}],"sungBy":[{"id":7854,"inV":351}],"writtenBy":[{"id":7853,"inV":699}]},"properties":{"name":[{"id":57,"valu
 e":"THE RACE IS ON"}],"songType":[{"id":59,"value":"cover"}],"performances":[{"id":58,"value":59}]}}
+{"id":21,"label":"song","inE":{"followedBy":[{"id":5634,"outV":22,"properties":{"weight":3}},{"id":5384,"outV":69,"properties":{"weight":20}},{"id":777,"outV":122,"properties":{"weight":7}},{"id":907,"outV":174,"properties":{"weight":1}},{"id":3981,"outV":106,"properties":{"weight":1}},{"id":6413,"outV":134,"properties":{"weight":18}},{"id":3088,"outV":153,"properties":{"weight":1}},{"id":17,"outV":9,"properties":{"weight":1}},{"id":5137,"outV":125,"properties":{"weight":6}},{"id":4754,"outV":37,"properties":{"weight":6}},{"id":1427,"outV":83,"properties":{"weight":1}},{"id":3859,"outV":60,"properties":{"weight":12}},{"id":4888,"outV":100,"properties":{"weight":1}},{"id":6555,"outV":172,"properties":{"weight":2}},{"id":1949,"outV":148,"properties":{"weight":6}},{"id":3234,"outV":63,"properties":{"weight":1}},{"id":6179,"outV":36,"properties":{"weight":1}},{"id":932,"outV":91,"properties":{"weight":1}},{"id":2471,"outV":68,"properties":{"weight":1}},{"id":4519,"outV":105,"properties"
 :{"weight":1}},{"id":4775,"outV":114,"properties":{"weight":5}},{"id":1577,"outV":18,"properties":{"weight":1}},{"id":4650,"outV":154,"properties":{"weight":2}},{"id":5035,"outV":47,"properties":{"weight":1}},{"id":44,"outV":46,"properties":{"weight":2}},{"id":1711,"outV":82,"properties":{"weight":2}},{"id":816,"outV":171,"properties":{"weight":11}},{"id":5680,"outV":167,"properties":{"weight":1}},{"id":945,"outV":67,"properties":{"weight":2}},{"id":3633,"outV":24,"properties":{"weight":1}},{"id":6705,"outV":141,"properties":{"weight":2}},{"id":6450,"outV":187,"properties":{"weight":8}},{"id":6195,"outV":232,"properties":{"weight":2}},{"id":1845,"outV":94,"properties":{"weight":8}},{"id":3896,"outV":51,"properties":{"weight":1}},{"id":5305,"outV":170,"properties":{"weight":1}},{"id":6202,"outV":319,"properties":{"weight":3}},{"id":1981,"outV":281,"properties":{"weight":1}},{"id":4030,"outV":173,"properties":{"weight":2}},{"id":3263,"outV":160,"properties":{"weight":4}},{"id":1089,"o
 utV":59,"properties":{"weight":4}},{"id":2113,"outV":17,"properties":{"weight":1}},{"id":6722,"outV":53,"properties":{"weight":1}},{"id":2371,"outV":87,"properties":{"weight":2}},{"id":2500,"outV":90,"properties":{"weight":1}},{"id":5060,"outV":257,"properties":{"weight":1}},{"id":5957,"outV":50,"properties":{"weight":2}},{"id":6981,"outV":175,"properties":{"weight":5}},{"id":4166,"outV":54,"properties":{"weight":6}},{"id":713,"outV":80,"properties":{"weight":1}},{"id":3789,"outV":168,"properties":{"weight":1}},{"id":6605,"outV":127,"properties":{"weight":1}},{"id":5070,"outV":128,"properties":{"weight":1}},{"id":2512,"outV":57,"properties":{"weight":3}},{"id":2896,"outV":101,"properties":{"weight":1}},{"id":467,"outV":194,"properties":{"weight":1}},{"id":2645,"outV":137,"properties":{"weight":3}},{"id":470,"outV":195,"properties":{"weight":1}},{"id":1240,"outV":183,"properties":{"weight":1}},{"id":1368,"outV":130,"properties":{"weight":10}},{"id":1752,"outV":28,"properties":{"weigh
 t":8}},{"id":2904,"outV":118,"properties":{"weight":1}},{"id":6105,"outV":72,"properties":{"weight":1}},{"id":1242,"outV":27,"properties":{"weight":5}},{"id":5212,"outV":99,"properties":{"weight":1}},{"id":3038,"outV":14,"properties":{"weight":1}},{"id":2271,"outV":25,"properties":{"weight":4}},{"id":5855,"outV":61,"properties":{"weight":1}},{"id":2016,"outV":149,"properties":{"weight":8}},{"id":4451,"outV":113,"properties":{"weight":1}},{"id":484,"outV":98,"properties":{"weight":2}},{"id":2788,"outV":15,"properties":{"weight":1}},{"id":3433,"outV":58,"properties":{"weight":3}},{"id":5738,"outV":129,"properties":{"weight":2}},{"id":5866,"outV":96,"properties":{"weight":96}},{"id":4588,"outV":85,"properties":{"weight":5}},{"id":238,"outV":145,"properties":{"weight":1}},{"id":2670,"outV":13,"properties":{"weight":4}},{"id":4462,"outV":202,"properties":{"weight":2}},{"id":7022,"outV":89,"properties":{"weight":1}},{"id":5359,"outV":132,"properties":{"weight":2}},{"id":6768,"outV":39,"pr
 operties":{"weight":2}},{"id":2162,"outV":151,"properties":{"weight":1}},{"id":3190,"outV":104,"properties":{"weight":1}},{"id":2040,"outV":92,"properties":{"weight":2}},{"id":3705,"outV":3,"properties":{"weight":2}},{"id":3322,"outV":252,"properties":{"weight":1}},{"id":5114,"outV":4,"properties":{"weight":1}},{"id":4347,"outV":62,"properties":{"weight":3}},{"id":4859,"outV":35,"properties":{"weight":4}},{"id":1148,"outV":26,"properties":{"weight":3}},{"id":6268,"outV":49,"properties":{"weight":51}},{"id":637,"outV":23,"properties":{"weight":3}},{"id":382,"outV":74,"properties":{"weight":4}}]},"outE":{"followedBy":[{"id":6319,"inV":59,"properties":{"weight":3}},{"id":6320,"inV":96,"properties":{"weight":72}},{"id":6321,"inV":319,"prope

<TRUNCATED>

[09/19] tinkerpop git commit: TINKERPOP-1274: GraphSON 2.0.

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeDeserializer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeDeserializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeDeserializer.java
new file mode 100644
index 0000000..e614a7a
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeDeserializer.java
@@ -0,0 +1,229 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.graphson;
+
+import org.apache.tinkerpop.shaded.jackson.annotation.JsonTypeInfo;
+import org.apache.tinkerpop.shaded.jackson.core.JsonParser;
+import org.apache.tinkerpop.shaded.jackson.core.JsonToken;
+import org.apache.tinkerpop.shaded.jackson.databind.BeanProperty;
+import org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext;
+import org.apache.tinkerpop.shaded.jackson.databind.JavaType;
+import org.apache.tinkerpop.shaded.jackson.databind.JsonDeserializer;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeDeserializer;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeIdResolver;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.impl.TypeDeserializerBase;
+import org.apache.tinkerpop.shaded.jackson.databind.type.TypeFactory;
+import org.apache.tinkerpop.shaded.jackson.databind.util.TokenBuffer;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Contains main logic for the whole JSON to Java deserialization. Handles types embedded with the version 2.0 of GraphSON.
+ *
+ * @author Kevin Gallardo (https://kgdo.me)
+ */
+public class GraphSONTypeDeserializer extends TypeDeserializerBase {
+    private final TypeIdResolver idRes;
+    private final String propertyName;
+    private final String valuePropertyName;
+    private final JavaType baseType;
+    private final TypeInfo typeInfo;
+
+    private static final JavaType mapJavaType = TypeFactory.defaultInstance().constructType(Map.class);
+    private static final JavaType arrayJavaType = TypeFactory.defaultInstance().constructType(List.class);
+
+
+    GraphSONTypeDeserializer(JavaType baseType, TypeIdResolver idRes, String typePropertyName,
+                             TypeInfo typeInfo, String valuePropertyName){
+        super(baseType, idRes, typePropertyName, false, null);
+        this.baseType = baseType;
+        this.idRes = idRes;
+        this.propertyName = typePropertyName;
+        this.typeInfo = typeInfo;
+        this.valuePropertyName = valuePropertyName;
+    }
+
+    @Override
+    public TypeDeserializer forProperty(BeanProperty beanProperty) {
+        return this;
+    }
+
+    @Override
+    public JsonTypeInfo.As getTypeInclusion() {
+        return JsonTypeInfo.As.WRAPPER_ARRAY;
+    }
+
+
+    @Override
+    public TypeIdResolver getTypeIdResolver() {
+        return idRes;
+    }
+
+    @Override
+    public Class<?> getDefaultImpl() {
+        return null;
+    }
+
+    @Override
+    public Object deserializeTypedFromObject(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
+        return deserialize(jsonParser, deserializationContext);
+    }
+
+    @Override
+    public Object deserializeTypedFromArray(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
+        return deserialize(jsonParser, deserializationContext);
+    }
+
+    @Override
+    public Object deserializeTypedFromScalar(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
+        return deserialize(jsonParser, deserializationContext);
+    }
+
+    @Override
+    public Object deserializeTypedFromAny(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
+        return deserialize(jsonParser, deserializationContext);
+    }
+
+    /**
+     * Main logic for the deserialization.
+     */
+    private Object deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
+        TokenBuffer buf = new TokenBuffer(jsonParser.getCodec(), false);
+        TokenBuffer localCopy = new TokenBuffer(jsonParser.getCodec(), false);
+
+        // Detect type
+        try {
+            // The Type pattern is START_OBJECT -> TEXT_FIELD(propertyName) && TEXT_FIELD(valueProp).
+            if (jsonParser.getCurrentToken() == JsonToken.START_OBJECT) {
+                buf.writeStartObject();
+                String typeName = null;
+                boolean valueCalled = false;
+
+                for (int i = 0; i < 2; i++) {
+                    String nextFieldName = jsonParser.nextFieldName();
+                    if (nextFieldName == null) {
+                        // empty map or less than 2 fields.
+                        break;
+                    }
+                    if (!nextFieldName.equals(this.propertyName) && !nextFieldName.equals(this.valuePropertyName)) {
+                        // no type, go out.
+                        break;
+                    }
+
+                    if (nextFieldName.equals(this.propertyName)) {
+                        typeName = jsonParser.nextTextValue();
+                        // keeping the spare buffer up to date in case it's a false detection (only the "@type" property)
+                        buf.writeStringField(this.propertyName, typeName);
+                        continue;
+                    }
+                    if (nextFieldName.equals(this.valuePropertyName)) {
+                        jsonParser.nextValue();
+                        // keeping the spare buffer up to date in case it's a false detection (only the "@value" property)
+                        buf.writeFieldName(this.valuePropertyName);
+                        // this is not greatly efficient, would need to find better
+                        // but the problem is that the fields "@value" and "@type" could be in any order
+                        localCopy.copyCurrentStructure(jsonParser);
+                        valueCalled = true;
+                        continue;
+                    }
+                }
+
+                if (typeName != null && valueCalled) {
+                    // Type pattern detected.
+                    JavaType typeFromId = idRes.typeFromId(typeName);
+
+                    if (!baseType.isJavaLangObject() && baseType != typeFromId) {
+                        throw new InstantiationException(
+                                String.format("Cannot deserialize the value with the detected type contained in the JSON ('%s') " +
+                                        "to the type specified in parameter to the object mapper (%s). " +
+                                        "Those types are incompatible.", typeName, baseType.getRawClass().toString())
+                        );
+                    }
+
+                    JsonDeserializer jsonDeserializer = deserializationContext.findContextualValueDeserializer(typeFromId, null);
+
+                    JsonParser tokenParser = localCopy.asParser();
+                    tokenParser.nextToken();
+                    Object value = jsonDeserializer.deserialize(tokenParser, deserializationContext);
+
+                    JsonToken t = jsonParser.nextToken();
+                    if (t == JsonToken.END_OBJECT) {
+                        // we're good to go
+                        return value;
+                    } else {
+                        // detected the type pattern entirely but the Map contained other properties
+                        // For now we error out because we assume that pattern is *only* reserved to
+                        // typed values.
+                        throw deserializationContext.mappingException("Detected the type pattern in the JSON payload " +
+                                "but the map containing the types and values contains other fields. This is not " +
+                                "allowed by the deserializer.");
+                    }
+                }
+            }
+        } catch (Exception e) {
+            throw deserializationContext.mappingException("Could not deserialize the JSON value as required. Nested exception: " + e.toString());
+        }
+
+        // While searching for the type pattern, we may have moved the cursor of the original JsonParser in param.
+        // To compensate, we have filled consistently a TokenBuffer that should contain the equivalent of
+        // what we skipped while searching for the pattern.
+        // This has a huge positive impact on performances, since JsonParser does not have a 'rewind()',
+        // the only other solution would have been to copy the whole original JsonParser. Which we avoid here and use
+        // an efficient structure made of TokenBuffer + JsonParserSequence/Concat.
+
+        // Concatenate buf + localCopy + end of original content
+
+        JsonParser toUseParser;
+        JsonParser bufferParser = buf.asParser();
+        JsonParser localCopyParser = localCopy.asParser();
+
+
+        JsonParser[] array = {bufferParser, localCopyParser, jsonParser};
+
+        toUseParser = new JsonParserConcat(array);
+        toUseParser.nextToken();
+
+        // If a type has been specified in parameter :
+        if (!baseType.isJavaLangObject()) {
+            JsonDeserializer jsonDeserializer = deserializationContext.findContextualValueDeserializer(baseType, null);
+            return jsonDeserializer.deserialize(toUseParser, deserializationContext);
+        }
+        // Otherwise, detect the current structure :
+        else {
+            if (toUseParser.isExpectedStartArrayToken()) {
+                return deserializationContext.findContextualValueDeserializer(arrayJavaType, null).deserialize(toUseParser, deserializationContext);
+            } else if (toUseParser.isExpectedStartObjectToken()) {
+                return deserializationContext.findContextualValueDeserializer(mapJavaType, null).deserialize(toUseParser, deserializationContext);
+            } else {
+                // There's JavaLangObject in param, there's no type detected in the payload, the payload isn't a JSON Map or JSON List
+                // then consider it a simple type, even though we shouldn't be here if it was a simple type.
+                // TODO : maybe throw an error instead?
+                // throw deserializationContext.mappingException("Roger, we have a problem deserializing");
+                JsonDeserializer jsonDeserializer = deserializationContext.findContextualValueDeserializer(baseType, null);
+                return jsonDeserializer.deserialize(toUseParser, deserializationContext);
+            }
+        }
+    }
+
+    private boolean canReadTypeId() {
+        return this.typeInfo == TypeInfo.PARTIAL_TYPES;
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeIdResolver.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeIdResolver.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeIdResolver.java
new file mode 100644
index 0000000..3edff73
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeIdResolver.java
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.graphson;
+
+import org.apache.tinkerpop.shaded.jackson.annotation.JsonTypeInfo;
+import org.apache.tinkerpop.shaded.jackson.databind.DatabindContext;
+import org.apache.tinkerpop.shaded.jackson.databind.JavaType;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeIdResolver;
+import org.apache.tinkerpop.shaded.jackson.databind.type.TypeFactory;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Provides quick lookup for Type deserialization extracted from the JSON payload. As well as the Java Object to types
+ * compatible for the version 2.0 of GraphSON.
+ *
+ * @author Kevin Gallardo (https://kgdo.me)
+ */
+public class GraphSONTypeIdResolver implements TypeIdResolver {
+
+    private final Map<String, JavaType> idToType = new HashMap<>();
+
+    private final Map<Class, String> typeToId = new HashMap<>();
+
+    public Map<String, JavaType> getIdToType() {
+        return idToType;
+    }
+
+    public Map<Class, String> getTypeToId() {
+        return typeToId;
+    }
+
+    // Override manually a type definition.
+    public GraphSONTypeIdResolver addCustomType(String name, Class clasz) {
+        // May override types already registered, that's wanted.
+        getIdToType().put(name, TypeFactory.defaultInstance().constructType(clasz));
+        getTypeToId().put(clasz, name);
+        return this;
+    }
+
+    @Override
+    public void init(JavaType javaType) {
+    }
+
+    @Override
+    public String idFromValue(Object o) {
+        return idFromValueAndType(o, o.getClass());
+    }
+
+    @Override
+    public String idFromValueAndType(Object o, Class<?> aClass) {
+        if (!getTypeToId().containsKey(aClass)) {
+            // If one wants to serialize an object with a type, but hasn't registered
+            // a typeID for that class, fail.
+            throw new IllegalArgumentException(String.format("Could not find a type identifier for the class : %s. " +
+                    "Make sure the value to serialize has a type identifier registered for its class.", aClass));
+        } else {
+            return getTypeToId().get(aClass);
+        }
+    }
+
+    @Override
+    public String idFromBaseType() {
+        return null;
+    }
+
+    @Override
+    public JavaType typeFromId(String s) {
+        return typeFromId(null, s);
+    }
+
+    @Override
+    public JavaType typeFromId(DatabindContext databindContext, String s) {
+        // Get the type from the string from the stored Map. If not found, default to deserialize as a String.
+        return getIdToType().containsKey(s)
+                ? getIdToType().get(s)
+                // TODO: shouldn't we fail instead, if the type is not found? Or log something?
+                : TypeFactory.defaultInstance().constructType(String.class);
+    }
+
+    @Override
+    public String getDescForKnownTypeIds() {
+        // TODO: Not sure what to put here.
+        return "GraphSON advanced typing system";
+    }
+
+    @Override
+    public JsonTypeInfo.Id getMechanism() {
+        return JsonTypeInfo.Id.CUSTOM;
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeResolverBuilder.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeResolverBuilder.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeResolverBuilder.java
new file mode 100644
index 0000000..001dd02
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeResolverBuilder.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.graphson;
+
+import org.apache.tinkerpop.shaded.jackson.databind.DeserializationConfig;
+import org.apache.tinkerpop.shaded.jackson.databind.JavaType;
+import org.apache.tinkerpop.shaded.jackson.databind.SerializationConfig;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.NamedType;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeDeserializer;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeIdResolver;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.impl.StdTypeResolverBuilder;
+
+import java.util.Collection;
+
+/**
+ * Creates the Type serializers as well as the Typed deserializers that will be provided to the serializers and
+ * deserializers. Contains the typeInfo level that should be provided by the GraphSONMapper.
+ *
+ * @author Kevin Gallardo (https://kgdo.me)
+ */
+public class GraphSONTypeResolverBuilder extends StdTypeResolverBuilder {
+
+    private TypeInfo typeInfo;
+    private String valuePropertyName;
+
+    @Override
+    public TypeDeserializer buildTypeDeserializer(DeserializationConfig config, JavaType baseType, Collection<NamedType> subtypes) {
+        TypeIdResolver idRes = this.idResolver(config, baseType, subtypes, false, true);
+        return new GraphSONTypeDeserializer(baseType, idRes, this.getTypeProperty(), typeInfo, valuePropertyName);
+    }
+
+
+    @Override
+    public TypeSerializer buildTypeSerializer(SerializationConfig config, JavaType baseType, Collection<NamedType> subtypes) {
+        TypeIdResolver idRes = this.idResolver(config, baseType, subtypes, true, false);
+        return new GraphSONTypeSerializer(idRes, this.getTypeProperty(), typeInfo, valuePropertyName);
+    }
+
+    public GraphSONTypeResolverBuilder valuePropertyName(String valuePropertyName) {
+        this.valuePropertyName = valuePropertyName;
+        return this;
+    }
+
+    public GraphSONTypeResolverBuilder typesEmbedding(TypeInfo typeInfo) {
+        this.typeInfo = typeInfo;
+        return this;
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java
new file mode 100644
index 0000000..98cf16a
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java
@@ -0,0 +1,197 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.graphson;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.util.Metrics;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.shaded.jackson.annotation.JsonTypeInfo;
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
+import org.apache.tinkerpop.shaded.jackson.databind.BeanProperty;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeIdResolver;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+/**
+ * Extension of the Jackson's default TypeSerializer. An instance of this object will be passed to the serializers
+ * on which they can safely call the utility methods to serialize types and making it compatible with the version
+ * 2.0 of GraphSON.
+ *
+ * @author Kevin Gallardo (https://kgdo.me)
+ */
+public class GraphSONTypeSerializer extends TypeSerializer {
+
+    private final TypeIdResolver idRes;
+    private final String propertyName;
+    private final TypeInfo typeInfo;
+    private final String valuePropertyName;
+
+    GraphSONTypeSerializer(TypeIdResolver idRes, String propertyName, TypeInfo typeInfo, String valuePropertyName) {
+        this.idRes = idRes;
+        this.propertyName = propertyName;
+        this.typeInfo = typeInfo;
+        this.valuePropertyName = valuePropertyName;
+    }
+
+    @Override
+    public TypeSerializer forProperty(BeanProperty beanProperty) {
+        return this;
+    }
+
+    @Override
+    public JsonTypeInfo.As getTypeInclusion() {
+        return null;
+    }
+
+    @Override
+    public String getPropertyName() {
+        return propertyName;
+    }
+
+    @Override
+    public TypeIdResolver getTypeIdResolver() {
+        return idRes;
+    }
+
+    @Override
+    public void writeTypePrefixForScalar(Object o, JsonGenerator jsonGenerator) throws IOException {
+        if (canWriteTypeId()) {
+            writeTypePrefix(jsonGenerator, getTypeIdResolver().idFromValueAndType(o, getClassFromObject(o)));
+        }
+    }
+
+    @Override
+    public void writeTypePrefixForObject(Object o, JsonGenerator jsonGenerator) throws IOException {
+        jsonGenerator.writeStartObject();
+        // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypePrefix(Map);
+    }
+
+    @Override
+    public void writeTypePrefixForArray(Object o, JsonGenerator jsonGenerator) throws IOException {
+        jsonGenerator.writeStartArray();
+        // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypePrefix(List);
+    }
+
+    @Override
+    public void writeTypeSuffixForScalar(Object o, JsonGenerator jsonGenerator) throws IOException {
+        if (canWriteTypeId()) {
+            writeTypeSuffix(jsonGenerator);
+        }
+    }
+
+    @Override
+    public void writeTypeSuffixForObject(Object o, JsonGenerator jsonGenerator) throws IOException {
+        jsonGenerator.writeEndObject();
+        // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypeSuffix(Map);
+    }
+
+    @Override
+    public void writeTypeSuffixForArray(Object o, JsonGenerator jsonGenerator) throws IOException {
+        jsonGenerator.writeEndArray();
+        // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypeSuffix(List);
+    }
+
+    @Override
+    public void writeCustomTypePrefixForScalar(Object o, JsonGenerator jsonGenerator, String s) throws IOException {
+        if (canWriteTypeId()) {
+            writeTypePrefix(jsonGenerator, s);
+        }
+    }
+
+    @Override
+    public void writeCustomTypePrefixForObject(Object o, JsonGenerator jsonGenerator, String s) throws IOException {
+        jsonGenerator.writeStartObject();
+        // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypePrefix(s);
+    }
+
+    @Override
+    public void writeCustomTypePrefixForArray(Object o, JsonGenerator jsonGenerator, String s) throws IOException {
+        jsonGenerator.writeStartArray();
+        // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypePrefix(s);
+    }
+
+    @Override
+    public void writeCustomTypeSuffixForScalar(Object o, JsonGenerator jsonGenerator, String s) throws IOException {
+        if (canWriteTypeId()) {
+            writeTypeSuffix(jsonGenerator);
+        }
+    }
+
+    @Override
+    public void writeCustomTypeSuffixForObject(Object o, JsonGenerator jsonGenerator, String s) throws IOException {
+        jsonGenerator.writeEndObject();
+        // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypeSuffix(s);
+    }
+
+    @Override
+    public void writeCustomTypeSuffixForArray(Object o, JsonGenerator jsonGenerator, String s) throws IOException {
+        jsonGenerator.writeEndArray();
+        // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypeSuffix(s);
+    }
+
+    private boolean canWriteTypeId() {
+        return typeInfo != null
+                && typeInfo == TypeInfo.PARTIAL_TYPES;
+    }
+
+    private void writeTypePrefix(JsonGenerator jsonGenerator, String s) throws IOException {
+        jsonGenerator.writeStartObject();
+        jsonGenerator.writeStringField(this.getPropertyName(), s);
+        jsonGenerator.writeFieldName(this.valuePropertyName);
+    }
+
+    private void writeTypeSuffix(JsonGenerator jsonGenerator) throws IOException {
+        jsonGenerator.writeEndObject();
+    }
+
+    /* We force only **one** translation of a Java object to a domain specific object.
+     i.e. users register typeIDs and serializers/deserializers for the predefined
+     types we have in the spec. Graph, Vertex, Edge, VertexProperty, etc... And
+     **not** their implementations (TinkerGraph, DetachedVertex, TinkerEdge,
+     etc..)
+    */
+    private Class getClassFromObject(Object o) {
+        // not the most efficient
+        Class c = o.getClass();
+        if (Vertex.class.isAssignableFrom(c)) {
+            return Vertex.class;
+        } else if (Edge.class.isAssignableFrom(c)) {
+            return Edge.class;
+        } else if (Path.class.isAssignableFrom(c)) {
+            return Path.class;
+        } else if (VertexProperty.class.isAssignableFrom(c)) {
+            return VertexProperty.class;
+        } else if (Metrics.class.isAssignableFrom(c)) {
+            return Metrics.class;
+        } else if (TraversalMetrics.class.isAssignableFrom(c)) {
+            return TraversalMetrics.class;
+        } else if (Property.class.isAssignableFrom(c)) {
+            return Property.class;
+        } else if (ByteBuffer.class.isAssignableFrom(c)) {
+            return ByteBuffer.class;
+        }
+        return c;
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONUtil.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONUtil.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONUtil.java
index 9ff427c..548bca1 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONUtil.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONUtil.java
@@ -55,4 +55,41 @@ public final class GraphSONUtil {
             serializer.serialize(object, jsonGenerator, serializerProvider);
         }
     }
+
+    public static void writeStartObject(Object o, JsonGenerator jsonGenerator, TypeSerializer typeSerializer) throws IOException {
+        if (typeSerializer != null)
+            typeSerializer.writeTypePrefixForObject(o, jsonGenerator);
+        else
+            jsonGenerator.writeStartObject();
+    }
+
+    public static void writeEndObject(Object o, JsonGenerator jsonGenerator, TypeSerializer typeSerializer) throws IOException {
+        if (typeSerializer != null)
+            typeSerializer.writeTypeSuffixForObject(o, jsonGenerator);
+        else
+            jsonGenerator.writeEndObject();
+    }
+
+    public static void writeStartArray(Object o, JsonGenerator jsonGenerator, TypeSerializer typeSerializer) throws IOException {
+        if (typeSerializer != null)
+            typeSerializer.writeTypePrefixForArray(o, jsonGenerator);
+        else
+            jsonGenerator.writeStartArray();
+    }
+
+
+    public static void writeEndArray(Object o, JsonGenerator jsonGenerator, TypeSerializer typeSerializer) throws IOException {
+        if (typeSerializer != null)
+            typeSerializer.writeTypeSuffixForArray(o, jsonGenerator);
+        else
+            jsonGenerator.writeEndArray();
+    }
+
+    static void safeWriteObjectField(JsonGenerator jsonGenerator, String key, Object value) {
+        try {
+            jsonGenerator.writeObjectField(key, value);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONVersion.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONVersion.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONVersion.java
index 628ea22..7740b06 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONVersion.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONVersion.java
@@ -24,7 +24,8 @@ package org.apache.tinkerpop.gremlin.structure.io.graphson;
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 public enum GraphSONVersion {
-    V1_0(GraphSONModule.GraphSONModuleV1d0.build(), "1.0");
+    V1_0(GraphSONModule.GraphSONModuleV1d0.build(), "1.0"),
+    V2_0(GraphSONModule.GraphSONModuleV2d0.build(), "2.0");
 
     private final GraphSONModule.GraphSONModuleBuilder builder;
     private final String versionNumber;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONWriter.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONWriter.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONWriter.java
index 37ed9a0..6980b48 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONWriter.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONWriter.java
@@ -27,11 +27,16 @@ import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.io.GraphWriter;
 import org.apache.tinkerpop.gremlin.structure.io.Mapper;
+import org.apache.tinkerpop.gremlin.structure.util.star.DirectionalStarGraph;
 import org.apache.tinkerpop.gremlin.structure.util.star.StarGraph;
-import org.apache.tinkerpop.gremlin.structure.util.star.StarGraphGraphSONSerializer;
 import org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper;
 
-import java.io.*;
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
 import java.util.Iterator;
 import java.util.function.Function;
 
@@ -74,7 +79,7 @@ public final class GraphSONWriter implements GraphWriter {
      */
     @Override
     public void writeVertex(final OutputStream outputStream, final Vertex v, final Direction direction) throws IOException {
-        mapper.writeValue(outputStream, new StarGraphGraphSONSerializer.DirectionalStarGraph(StarGraph.of(v), direction));
+        mapper.writeValue(outputStream, new DirectionalStarGraph(StarGraph.of(v), direction));
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaTimeSerializers.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaTimeSerializers.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaTimeSerializers.java
deleted file mode 100644
index 7ceae94..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaTimeSerializers.java
+++ /dev/null
@@ -1,326 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.structure.io.graphson;
-
-import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
-import org.apache.tinkerpop.shaded.jackson.core.JsonParser;
-import org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext;
-import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
-import org.apache.tinkerpop.shaded.jackson.databind.deser.std.StdDeserializer;
-import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
-import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
-
-import java.io.IOException;
-import java.time.Duration;
-import java.time.Instant;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.MonthDay;
-import java.time.OffsetDateTime;
-import java.time.OffsetTime;
-import java.time.Period;
-import java.time.Year;
-import java.time.YearMonth;
-import java.time.ZoneOffset;
-import java.time.ZonedDateTime;
-
-/**
- * GraphSON serializers for classes in {@code java.time.*}.
- */
-final class JavaTimeSerializers {
-
-    private JavaTimeSerializers() {}
-
-    /**
-     * Base class for serializing the {@code java.time.*} to ISO-8061 formats.
-     */
-    static abstract class AbstractJavaTimeSerializer<T> extends StdSerializer<T> {
-
-        public AbstractJavaTimeSerializer(final Class<T> clazz) {
-            super(clazz);
-        }
-
-        @Override
-        public void serialize(final T value, final JsonGenerator gen,
-                              final SerializerProvider serializerProvider) throws IOException {
-            gen.writeString(value.toString());
-        }
-
-        @Override
-        public void serializeWithType(final T value, final JsonGenerator gen,
-                                      final SerializerProvider serializers, final TypeSerializer typeSer) throws IOException {
-            typeSer.writeTypePrefixForObject(value, gen);
-            gen.writeStringField(GraphSONTokens.VALUE, value.toString());
-            typeSer.writeTypeSuffixForObject(value, gen);
-        }
-    }
-    /**
-     * Base class for serializing the {@code java.time.*} from ISO-8061 formats.
-     */
-    abstract static class AbstractJavaTimeJacksonDeserializer<T> extends StdDeserializer<T> {
-        public AbstractJavaTimeJacksonDeserializer(final Class<T> clazz) {
-            super(clazz);
-        }
-
-        public abstract T parse(final String val);
-
-        @Override
-        public T deserialize(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException {
-            if (!jsonParser.getText().equals(GraphSONTokens.VALUE))
-                throw new IOException(String.format("Invalid format for %s - expecting '%s' with a text value in ISO-8061 format", _valueClass.getSimpleName(), GraphSONTokens.VALUE));
-
-            return parse(jsonParser.nextTextValue());
-        }
-    }
-
-    final static class DurationJacksonSerializer extends AbstractJavaTimeSerializer<Duration> {
-
-        public DurationJacksonSerializer() {
-            super(Duration.class);
-        }
-    }
-
-    final static class DurationJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<Duration> {
-        public DurationJacksonDeserializer() {
-            super(Duration.class);
-        }
-
-        @Override
-        public Duration parse(final String val) {
-            return Duration.parse(val);
-        }
-    }
-
-    final static class InstantJacksonSerializer extends AbstractJavaTimeSerializer<Instant> {
-
-        public InstantJacksonSerializer() {
-            super(Instant.class);
-        }
-    }
-
-    final static class InstantJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<Instant> {
-        public InstantJacksonDeserializer() {
-            super(Instant.class);
-        }
-
-        @Override
-        public Instant parse(final String val) {
-            return Instant.parse(val);
-        }
-    }
-
-    final static class LocalDateJacksonSerializer extends AbstractJavaTimeSerializer<LocalDate> {
-
-        public LocalDateJacksonSerializer() {
-            super(LocalDate.class);
-        }
-    }
-
-    final static class LocalDateJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<LocalDate> {
-        public LocalDateJacksonDeserializer() {
-            super(LocalDate.class);
-        }
-
-        @Override
-        public LocalDate parse(final String val) {
-            return LocalDate.parse(val);
-        }
-    }
-
-    final static class LocalDateTimeJacksonSerializer extends AbstractJavaTimeSerializer<LocalDateTime> {
-
-        public LocalDateTimeJacksonSerializer() {
-            super(LocalDateTime.class);
-        }
-    }
-
-    final static class LocalDateTimeJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<LocalDateTime> {
-        public LocalDateTimeJacksonDeserializer() {
-            super(LocalDateTime.class);
-        }
-
-        @Override
-        public LocalDateTime parse(final String val) {
-            return LocalDateTime.parse(val);
-        }
-    }
-
-    final static class LocalTimeJacksonSerializer extends AbstractJavaTimeSerializer<LocalTime> {
-
-        public LocalTimeJacksonSerializer() {
-            super(LocalTime.class);
-        }
-    }
-
-    final static class LocalTimeJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<LocalTime> {
-        public LocalTimeJacksonDeserializer() {
-            super(LocalTime.class);
-        }
-
-        @Override
-        public LocalTime parse(final String val) {
-            return LocalTime.parse(val);
-        }
-    }
-
-    final static class MonthDayJacksonSerializer extends AbstractJavaTimeSerializer<MonthDay> {
-
-        public MonthDayJacksonSerializer() {
-            super(MonthDay.class);
-        }
-    }
-
-    final static class MonthDayJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<MonthDay> {
-        public MonthDayJacksonDeserializer() {
-            super(MonthDay.class);
-        }
-
-        @Override
-        public MonthDay parse(final String val) {
-            return MonthDay.parse(val);
-        }
-    }
-
-    final static class OffsetDateTimeJacksonSerializer extends AbstractJavaTimeSerializer<OffsetDateTime> {
-
-        public OffsetDateTimeJacksonSerializer() {
-            super(OffsetDateTime.class);
-        }
-    }
-
-    final static class OffsetDateTimeJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<OffsetDateTime> {
-        public OffsetDateTimeJacksonDeserializer() {
-            super(OffsetDateTime.class);
-        }
-
-        @Override
-        public OffsetDateTime parse(final String val) {
-            return OffsetDateTime.parse(val);
-        }
-    }
-
-    final static class OffsetTimeJacksonSerializer extends AbstractJavaTimeSerializer<OffsetTime> {
-
-        public OffsetTimeJacksonSerializer() {
-            super(OffsetTime.class);
-        }
-    }
-
-    final static class OffsetTimeJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<OffsetTime> {
-        public OffsetTimeJacksonDeserializer() {
-            super(OffsetTime.class);
-        }
-
-        @Override
-        public OffsetTime parse(final String val) {
-            return OffsetTime.parse(val);
-        }
-    }
-
-    final static class PeriodJacksonSerializer extends AbstractJavaTimeSerializer<Period> {
-
-        public PeriodJacksonSerializer() {
-            super(Period.class);
-        }
-    }
-
-    final static class PeriodJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<Period> {
-        public PeriodJacksonDeserializer() {
-            super(Period.class);
-        }
-
-        @Override
-        public Period parse(final String val) {
-            return Period.parse(val);
-        }
-    }
-
-    final static class YearJacksonSerializer extends AbstractJavaTimeSerializer<Year> {
-
-        public YearJacksonSerializer() {
-            super(Year.class);
-        }
-    }
-
-    final static class YearJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<Year> {
-        public YearJacksonDeserializer() {
-            super(Year.class);
-        }
-
-        @Override
-        public Year parse(final String val) {
-            return Year.parse(val);
-        }
-    }
-
-    final static class YearMonthJacksonSerializer extends AbstractJavaTimeSerializer<YearMonth> {
-
-        public YearMonthJacksonSerializer() {
-            super(YearMonth.class);
-        }
-    }
-
-    final static class YearMonthJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<YearMonth> {
-        public YearMonthJacksonDeserializer() {
-            super(YearMonth.class);
-        }
-
-        @Override
-        public YearMonth parse(final String val) {
-            return YearMonth.parse(val);
-        }
-    }
-
-    final static class ZonedDateTimeJacksonSerializer extends AbstractJavaTimeSerializer<ZonedDateTime> {
-
-        public ZonedDateTimeJacksonSerializer() {
-            super(ZonedDateTime.class);
-        }
-    }
-
-    final static class ZonedDateTimeJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<ZonedDateTime> {
-        public ZonedDateTimeJacksonDeserializer() {
-            super(ZonedDateTime.class);
-        }
-
-        @Override
-        public ZonedDateTime parse(final String val) {
-            return ZonedDateTime.parse(val);
-        }
-    }
-
-    final static class ZoneOffsetJacksonSerializer extends AbstractJavaTimeSerializer<ZoneOffset> {
-
-        public ZoneOffsetJacksonSerializer() {
-            super(ZoneOffset.class);
-        }
-    }
-
-    final static class ZoneOffsetJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<ZoneOffset> {
-        public ZoneOffsetJacksonDeserializer() {
-            super(ZoneOffset.class);
-        }
-
-        @Override
-        public ZoneOffset parse(final String val) {
-            return ZoneOffset.of(val);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaTimeSerializersV1d0.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaTimeSerializersV1d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaTimeSerializersV1d0.java
new file mode 100644
index 0000000..763c1d9
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaTimeSerializersV1d0.java
@@ -0,0 +1,326 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.graphson;
+
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
+import org.apache.tinkerpop.shaded.jackson.core.JsonParser;
+import org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext;
+import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
+import org.apache.tinkerpop.shaded.jackson.databind.deser.std.StdDeserializer;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
+
+import java.io.IOException;
+import java.time.Duration;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.MonthDay;
+import java.time.OffsetDateTime;
+import java.time.OffsetTime;
+import java.time.Period;
+import java.time.Year;
+import java.time.YearMonth;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
+
+/**
+ * GraphSON serializers for classes in {@code java.time.*}.
+ */
+final class JavaTimeSerializersV1d0 {
+
+    private JavaTimeSerializersV1d0() {}
+
+    /**
+     * Base class for serializing the {@code java.time.*} to ISO-8061 formats.
+     */
+    static abstract class AbstractJavaTimeSerializer<T> extends StdSerializer<T> {
+
+        public AbstractJavaTimeSerializer(final Class<T> clazz) {
+            super(clazz);
+        }
+
+        @Override
+        public void serialize(final T value, final JsonGenerator gen,
+                              final SerializerProvider serializerProvider) throws IOException {
+            gen.writeString(value.toString());
+        }
+
+        @Override
+        public void serializeWithType(final T value, final JsonGenerator gen,
+                                      final SerializerProvider serializers, final TypeSerializer typeSer) throws IOException {
+            typeSer.writeTypePrefixForObject(value, gen);
+            gen.writeStringField(GraphSONTokens.VALUE, value.toString());
+            typeSer.writeTypeSuffixForObject(value, gen);
+        }
+    }
+    /**
+     * Base class for serializing the {@code java.time.*} from ISO-8061 formats.
+     */
+    abstract static class AbstractJavaTimeJacksonDeserializer<T> extends StdDeserializer<T> {
+        public AbstractJavaTimeJacksonDeserializer(final Class<T> clazz) {
+            super(clazz);
+        }
+
+        public abstract T parse(final String val);
+
+        @Override
+        public T deserialize(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException {
+            if (!jsonParser.getText().equals(GraphSONTokens.VALUE))
+                throw new IOException(String.format("Invalid format for %s - expecting '%s' with a text value in ISO-8061 format", _valueClass.getSimpleName(), GraphSONTokens.VALUE));
+
+            return parse(jsonParser.nextTextValue());
+        }
+    }
+
+    final static class DurationJacksonSerializer extends AbstractJavaTimeSerializer<Duration> {
+
+        public DurationJacksonSerializer() {
+            super(Duration.class);
+        }
+    }
+
+    final static class DurationJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<Duration> {
+        public DurationJacksonDeserializer() {
+            super(Duration.class);
+        }
+
+        @Override
+        public Duration parse(final String val) {
+            return Duration.parse(val);
+        }
+    }
+
+    final static class InstantJacksonSerializer extends AbstractJavaTimeSerializer<Instant> {
+
+        public InstantJacksonSerializer() {
+            super(Instant.class);
+        }
+    }
+
+    final static class InstantJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<Instant> {
+        public InstantJacksonDeserializer() {
+            super(Instant.class);
+        }
+
+        @Override
+        public Instant parse(final String val) {
+            return Instant.parse(val);
+        }
+    }
+
+    final static class LocalDateJacksonSerializer extends AbstractJavaTimeSerializer<LocalDate> {
+
+        public LocalDateJacksonSerializer() {
+            super(LocalDate.class);
+        }
+    }
+
+    final static class LocalDateJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<LocalDate> {
+        public LocalDateJacksonDeserializer() {
+            super(LocalDate.class);
+        }
+
+        @Override
+        public LocalDate parse(final String val) {
+            return LocalDate.parse(val);
+        }
+    }
+
+    final static class LocalDateTimeJacksonSerializer extends AbstractJavaTimeSerializer<LocalDateTime> {
+
+        public LocalDateTimeJacksonSerializer() {
+            super(LocalDateTime.class);
+        }
+    }
+
+    final static class LocalDateTimeJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<LocalDateTime> {
+        public LocalDateTimeJacksonDeserializer() {
+            super(LocalDateTime.class);
+        }
+
+        @Override
+        public LocalDateTime parse(final String val) {
+            return LocalDateTime.parse(val);
+        }
+    }
+
+    final static class LocalTimeJacksonSerializer extends AbstractJavaTimeSerializer<LocalTime> {
+
+        public LocalTimeJacksonSerializer() {
+            super(LocalTime.class);
+        }
+    }
+
+    final static class LocalTimeJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<LocalTime> {
+        public LocalTimeJacksonDeserializer() {
+            super(LocalTime.class);
+        }
+
+        @Override
+        public LocalTime parse(final String val) {
+            return LocalTime.parse(val);
+        }
+    }
+
+    final static class MonthDayJacksonSerializer extends AbstractJavaTimeSerializer<MonthDay> {
+
+        public MonthDayJacksonSerializer() {
+            super(MonthDay.class);
+        }
+    }
+
+    final static class MonthDayJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<MonthDay> {
+        public MonthDayJacksonDeserializer() {
+            super(MonthDay.class);
+        }
+
+        @Override
+        public MonthDay parse(final String val) {
+            return MonthDay.parse(val);
+        }
+    }
+
+    final static class OffsetDateTimeJacksonSerializer extends AbstractJavaTimeSerializer<OffsetDateTime> {
+
+        public OffsetDateTimeJacksonSerializer() {
+            super(OffsetDateTime.class);
+        }
+    }
+
+    final static class OffsetDateTimeJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<OffsetDateTime> {
+        public OffsetDateTimeJacksonDeserializer() {
+            super(OffsetDateTime.class);
+        }
+
+        @Override
+        public OffsetDateTime parse(final String val) {
+            return OffsetDateTime.parse(val);
+        }
+    }
+
+    final static class OffsetTimeJacksonSerializer extends AbstractJavaTimeSerializer<OffsetTime> {
+
+        public OffsetTimeJacksonSerializer() {
+            super(OffsetTime.class);
+        }
+    }
+
+    final static class OffsetTimeJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<OffsetTime> {
+        public OffsetTimeJacksonDeserializer() {
+            super(OffsetTime.class);
+        }
+
+        @Override
+        public OffsetTime parse(final String val) {
+            return OffsetTime.parse(val);
+        }
+    }
+
+    final static class PeriodJacksonSerializer extends AbstractJavaTimeSerializer<Period> {
+
+        public PeriodJacksonSerializer() {
+            super(Period.class);
+        }
+    }
+
+    final static class PeriodJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<Period> {
+        public PeriodJacksonDeserializer() {
+            super(Period.class);
+        }
+
+        @Override
+        public Period parse(final String val) {
+            return Period.parse(val);
+        }
+    }
+
+    final static class YearJacksonSerializer extends AbstractJavaTimeSerializer<Year> {
+
+        public YearJacksonSerializer() {
+            super(Year.class);
+        }
+    }
+
+    final static class YearJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<Year> {
+        public YearJacksonDeserializer() {
+            super(Year.class);
+        }
+
+        @Override
+        public Year parse(final String val) {
+            return Year.parse(val);
+        }
+    }
+
+    final static class YearMonthJacksonSerializer extends AbstractJavaTimeSerializer<YearMonth> {
+
+        public YearMonthJacksonSerializer() {
+            super(YearMonth.class);
+        }
+    }
+
+    final static class YearMonthJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<YearMonth> {
+        public YearMonthJacksonDeserializer() {
+            super(YearMonth.class);
+        }
+
+        @Override
+        public YearMonth parse(final String val) {
+            return YearMonth.parse(val);
+        }
+    }
+
+    final static class ZonedDateTimeJacksonSerializer extends AbstractJavaTimeSerializer<ZonedDateTime> {
+
+        public ZonedDateTimeJacksonSerializer() {
+            super(ZonedDateTime.class);
+        }
+    }
+
+    final static class ZonedDateTimeJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<ZonedDateTime> {
+        public ZonedDateTimeJacksonDeserializer() {
+            super(ZonedDateTime.class);
+        }
+
+        @Override
+        public ZonedDateTime parse(final String val) {
+            return ZonedDateTime.parse(val);
+        }
+    }
+
+    final static class ZoneOffsetJacksonSerializer extends AbstractJavaTimeSerializer<ZoneOffset> {
+
+        public ZoneOffsetJacksonSerializer() {
+            super(ZoneOffset.class);
+        }
+    }
+
+    final static class ZoneOffsetJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<ZoneOffset> {
+        public ZoneOffsetJacksonDeserializer() {
+            super(ZoneOffset.class);
+        }
+
+        @Override
+        public ZoneOffset parse(final String val) {
+            return ZoneOffset.of(val);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaTimeSerializersV2d0.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaTimeSerializersV2d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaTimeSerializersV2d0.java
new file mode 100644
index 0000000..2950a33
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaTimeSerializersV2d0.java
@@ -0,0 +1,323 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.graphson;
+
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
+import org.apache.tinkerpop.shaded.jackson.core.JsonParser;
+import org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext;
+import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
+import org.apache.tinkerpop.shaded.jackson.databind.deser.std.StdDeserializer;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
+
+import java.io.IOException;
+import java.time.Duration;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.MonthDay;
+import java.time.OffsetDateTime;
+import java.time.OffsetTime;
+import java.time.Period;
+import java.time.Year;
+import java.time.YearMonth;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
+
+/**
+ * GraphSON serializers for classes in {@code java.time.*} for the version 2.0 of GraphSON.
+ */
+final class JavaTimeSerializersV2d0 {
+
+    private JavaTimeSerializersV2d0() {}
+
+    /**
+     * Base class for serializing the {@code java.time.*} to ISO-8061 formats.
+     */
+    static abstract class AbstractJavaTimeSerializer<T> extends StdSerializer<T> {
+
+        public AbstractJavaTimeSerializer(final Class<T> clazz) {
+            super(clazz);
+        }
+
+        @Override
+        public void serialize(final T value, final JsonGenerator gen,
+                              final SerializerProvider serializerProvider) throws IOException {
+            gen.writeString(value.toString());
+        }
+
+        @Override
+        public void serializeWithType(final T value, final JsonGenerator gen,
+                                      final SerializerProvider serializers, final TypeSerializer typeSer) throws IOException {
+            typeSer.writeTypePrefixForScalar(value, gen);
+            gen.writeString(value.toString());
+            typeSer.writeTypeSuffixForScalar(value, gen);
+        }
+    }
+    /**
+     * Base class for serializing the {@code java.time.*} from ISO-8061 formats.
+     */
+    abstract static class AbstractJavaTimeJacksonDeserializer<T> extends StdDeserializer<T> {
+        public AbstractJavaTimeJacksonDeserializer(final Class<T> clazz) {
+            super(clazz);
+        }
+
+        public abstract T parse(final String val);
+
+        @Override
+        public T deserialize(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException {
+            return parse(jsonParser.getText());
+        }
+    }
+
+    final static class DurationJacksonSerializer extends AbstractJavaTimeSerializer<Duration> {
+
+        public DurationJacksonSerializer() {
+            super(Duration.class);
+        }
+    }
+
+    final static class DurationJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<Duration> {
+        public DurationJacksonDeserializer() {
+            super(Duration.class);
+        }
+
+        @Override
+        public Duration parse(final String val) {
+            return Duration.parse(val);
+        }
+    }
+
+    final static class InstantJacksonSerializer extends AbstractJavaTimeSerializer<Instant> {
+
+        public InstantJacksonSerializer() {
+            super(Instant.class);
+        }
+    }
+
+    final static class InstantJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<Instant> {
+        public InstantJacksonDeserializer() {
+            super(Instant.class);
+        }
+
+        @Override
+        public Instant parse(final String val) {
+            return Instant.parse(val);
+        }
+    }
+
+    final static class LocalDateJacksonSerializer extends AbstractJavaTimeSerializer<LocalDate> {
+
+        public LocalDateJacksonSerializer() {
+            super(LocalDate.class);
+        }
+    }
+
+    final static class LocalDateJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<LocalDate> {
+        public LocalDateJacksonDeserializer() {
+            super(LocalDate.class);
+        }
+
+        @Override
+        public LocalDate parse(final String val) {
+            return LocalDate.parse(val);
+        }
+    }
+
+    final static class LocalDateTimeJacksonSerializer extends AbstractJavaTimeSerializer<LocalDateTime> {
+
+        public LocalDateTimeJacksonSerializer() {
+            super(LocalDateTime.class);
+        }
+    }
+
+    final static class LocalDateTimeJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<LocalDateTime> {
+        public LocalDateTimeJacksonDeserializer() {
+            super(LocalDateTime.class);
+        }
+
+        @Override
+        public LocalDateTime parse(final String val) {
+            return LocalDateTime.parse(val);
+        }
+    }
+
+    final static class LocalTimeJacksonSerializer extends AbstractJavaTimeSerializer<LocalTime> {
+
+        public LocalTimeJacksonSerializer() {
+            super(LocalTime.class);
+        }
+    }
+
+    final static class LocalTimeJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<LocalTime> {
+        public LocalTimeJacksonDeserializer() {
+            super(LocalTime.class);
+        }
+
+        @Override
+        public LocalTime parse(final String val) {
+            return LocalTime.parse(val);
+        }
+    }
+
+    final static class MonthDayJacksonSerializer extends AbstractJavaTimeSerializer<MonthDay> {
+
+        public MonthDayJacksonSerializer() {
+            super(MonthDay.class);
+        }
+    }
+
+    final static class MonthDayJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<MonthDay> {
+        public MonthDayJacksonDeserializer() {
+            super(MonthDay.class);
+        }
+
+        @Override
+        public MonthDay parse(final String val) {
+            return MonthDay.parse(val);
+        }
+    }
+
+    final static class OffsetDateTimeJacksonSerializer extends AbstractJavaTimeSerializer<OffsetDateTime> {
+
+        public OffsetDateTimeJacksonSerializer() {
+            super(OffsetDateTime.class);
+        }
+    }
+
+    final static class OffsetDateTimeJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<OffsetDateTime> {
+        public OffsetDateTimeJacksonDeserializer() {
+            super(OffsetDateTime.class);
+        }
+
+        @Override
+        public OffsetDateTime parse(final String val) {
+            return OffsetDateTime.parse(val);
+        }
+    }
+
+    final static class OffsetTimeJacksonSerializer extends AbstractJavaTimeSerializer<OffsetTime> {
+
+        public OffsetTimeJacksonSerializer() {
+            super(OffsetTime.class);
+        }
+    }
+
+    final static class OffsetTimeJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<OffsetTime> {
+        public OffsetTimeJacksonDeserializer() {
+            super(OffsetTime.class);
+        }
+
+        @Override
+        public OffsetTime parse(final String val) {
+            return OffsetTime.parse(val);
+        }
+    }
+
+    final static class PeriodJacksonSerializer extends AbstractJavaTimeSerializer<Period> {
+
+        public PeriodJacksonSerializer() {
+            super(Period.class);
+        }
+    }
+
+    final static class PeriodJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<Period> {
+        public PeriodJacksonDeserializer() {
+            super(Period.class);
+        }
+
+        @Override
+        public Period parse(final String val) {
+            return Period.parse(val);
+        }
+    }
+
+    final static class YearJacksonSerializer extends AbstractJavaTimeSerializer<Year> {
+
+        public YearJacksonSerializer() {
+            super(Year.class);
+        }
+    }
+
+    final static class YearJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<Year> {
+        public YearJacksonDeserializer() {
+            super(Year.class);
+        }
+
+        @Override
+        public Year parse(final String val) {
+            return Year.parse(val);
+        }
+    }
+
+    final static class YearMonthJacksonSerializer extends AbstractJavaTimeSerializer<YearMonth> {
+
+        public YearMonthJacksonSerializer() {
+            super(YearMonth.class);
+        }
+    }
+
+    final static class YearMonthJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<YearMonth> {
+        public YearMonthJacksonDeserializer() {
+            super(YearMonth.class);
+        }
+
+        @Override
+        public YearMonth parse(final String val) {
+            return YearMonth.parse(val);
+        }
+    }
+
+    final static class ZonedDateTimeJacksonSerializer extends AbstractJavaTimeSerializer<ZonedDateTime> {
+
+        public ZonedDateTimeJacksonSerializer() {
+            super(ZonedDateTime.class);
+        }
+    }
+
+    final static class ZonedDateTimeJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<ZonedDateTime> {
+        public ZonedDateTimeJacksonDeserializer() {
+            super(ZonedDateTime.class);
+        }
+
+        @Override
+        public ZonedDateTime parse(final String val) {
+            return ZonedDateTime.parse(val);
+        }
+    }
+
+    final static class ZoneOffsetJacksonSerializer extends AbstractJavaTimeSerializer<ZoneOffset> {
+
+        public ZoneOffsetJacksonSerializer() {
+            super(ZoneOffset.class);
+        }
+    }
+
+    final static class ZoneOffsetJacksonDeserializer extends AbstractJavaTimeJacksonDeserializer<ZoneOffset> {
+        public ZoneOffsetJacksonDeserializer() {
+            super(ZoneOffset.class);
+        }
+
+        @Override
+        public ZoneOffset parse(final String val) {
+            return ZoneOffset.of(val);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaUtilSerializers.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaUtilSerializers.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaUtilSerializers.java
deleted file mode 100644
index 4f2f5da..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaUtilSerializers.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.structure.io.graphson;
-
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
-import org.apache.tinkerpop.shaded.jackson.databind.SerializationFeature;
-import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
-import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
-import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
-
-import java.io.IOException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * GraphSON serializers for classes in {@code java.util.*}.
- */
-final class JavaUtilSerializers {
-
-    private JavaUtilSerializers() {}
-
-    final static class MapEntryJacksonSerializer extends StdSerializer<Map.Entry> {
-
-        public MapEntryJacksonSerializer() {
-            super(Map.Entry.class);
-        }
-
-        @Override
-        public void serialize(final Map.Entry entry, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
-                throws IOException {
-            ser(entry, jsonGenerator, serializerProvider, null);
-        }
-
-        @Override
-        public void serializeWithType(final Map.Entry entry, final JsonGenerator jsonGenerator,
-                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
-            ser(entry, jsonGenerator, serializerProvider, typeSerializer);
-        }
-
-        private static void ser(final Map.Entry entry, final JsonGenerator jsonGenerator,
-                                final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
-            jsonGenerator.writeStartObject();
-            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-
-            // this treatment of keys is consistent with the current GraphSONKeySerializer which extends the
-            // StdKeySerializer
-            final Object key = entry.getKey();
-            final Class cls = key.getClass();
-            String k;
-            if (cls == String.class)
-                k = (String) key;
-            else if (Element.class.isAssignableFrom(cls))
-                k = ((Element) key).id().toString();
-            else if(Date.class.isAssignableFrom(cls)) {
-                if (serializerProvider.isEnabled(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS))
-                    k = String.valueOf(((Date) key).getTime());
-                else
-                    k = serializerProvider.getConfig().getDateFormat().format((Date) key);
-            } else if(cls == Class.class)
-                k = ((Class) key).getName();
-            else
-                k = key.toString();
-
-            serializerProvider.defaultSerializeField(k, entry.getValue(), jsonGenerator);
-            jsonGenerator.writeEndObject();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaUtilSerializersV1d0.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaUtilSerializersV1d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaUtilSerializersV1d0.java
new file mode 100644
index 0000000..15dd3b9
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaUtilSerializersV1d0.java
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.graphson;
+
+import org.apache.tinkerpop.gremlin.structure.Element;
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
+import org.apache.tinkerpop.shaded.jackson.databind.SerializationFeature;
+import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
+
+import java.io.IOException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * GraphSON serializers for classes in {@code java.util.*}.
+ */
+final class JavaUtilSerializersV1d0 {
+
+    private JavaUtilSerializersV1d0() {}
+
+    final static class MapEntryJacksonSerializer extends StdSerializer<Map.Entry> {
+
+        public MapEntryJacksonSerializer() {
+            super(Map.Entry.class);
+        }
+
+        @Override
+        public void serialize(final Map.Entry entry, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
+                throws IOException {
+            ser(entry, jsonGenerator, serializerProvider, null);
+        }
+
+        @Override
+        public void serializeWithType(final Map.Entry entry, final JsonGenerator jsonGenerator,
+                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
+            ser(entry, jsonGenerator, serializerProvider, typeSerializer);
+        }
+
+        private static void ser(final Map.Entry entry, final JsonGenerator jsonGenerator,
+                                final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
+            jsonGenerator.writeStartObject();
+            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+
+            // this treatment of keys is consistent with the current GraphSONKeySerializer which extends the
+            // StdKeySerializer
+            final Object key = entry.getKey();
+            final Class cls = key.getClass();
+            String k;
+            if (cls == String.class)
+                k = (String) key;
+            else if (Element.class.isAssignableFrom(cls))
+                k = ((Element) key).id().toString();
+            else if(Date.class.isAssignableFrom(cls)) {
+                if (serializerProvider.isEnabled(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS))
+                    k = String.valueOf(((Date) key).getTime());
+                else
+                    k = serializerProvider.getConfig().getDateFormat().format((Date) key);
+            } else if(cls == Class.class)
+                k = ((Class) key).getName();
+            else
+                k = key.toString();
+
+            serializerProvider.defaultSerializeField(k, entry.getValue(), jsonGenerator);
+            jsonGenerator.writeEndObject();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaUtilSerializersV2d0.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaUtilSerializersV2d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaUtilSerializersV2d0.java
new file mode 100644
index 0000000..8d867c9
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaUtilSerializersV2d0.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.graphson;
+
+import org.apache.tinkerpop.gremlin.structure.Element;
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
+import org.apache.tinkerpop.shaded.jackson.databind.SerializationFeature;
+import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.ByteBufferSerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * GraphSON serializers for classes in {@code java.util.*} for the version 2.0 of GraphSON.
+ */
+final class JavaUtilSerializersV2d0 {
+
+    private JavaUtilSerializersV2d0() {}
+
+    final static class MapEntryJacksonSerializer extends StdSerializer<Map.Entry> {
+
+        public MapEntryJacksonSerializer() {
+            super(Map.Entry.class);
+        }
+
+        @Override
+        public void serialize(final Map.Entry entry, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
+                throws IOException {
+            jsonGenerator.writeStartObject();
+            ser(entry, jsonGenerator, serializerProvider);
+            jsonGenerator.writeEndObject();
+        }
+
+        @Override
+        public void serializeWithType(final Map.Entry entry, final JsonGenerator jsonGenerator,
+                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
+            typeSerializer.writeTypePrefixForObject(entry, jsonGenerator);
+            ser(entry, jsonGenerator, serializerProvider);
+            typeSerializer.writeTypeSuffixForObject(entry, jsonGenerator);
+        }
+
+        private static void ser(final Map.Entry entry, final JsonGenerator jsonGenerator,
+                                final SerializerProvider serializerProvider) throws IOException {
+            // this treatment of keys is consistent with the current GraphSONKeySerializer which extends the
+            // StdKeySerializer
+            final Object key = entry.getKey();
+            final Class cls = key.getClass();
+            String k;
+            if (cls == String.class)
+                k = (String) key;
+            else if (Element.class.isAssignableFrom(cls))
+                k = ((Element) key).id().toString();
+            else if(Date.class.isAssignableFrom(cls)) {
+                if (serializerProvider.isEnabled(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS))
+                    k = String.valueOf(((Date) key).getTime());
+                else
+                    k = serializerProvider.getConfig().getDateFormat().format((Date) key);
+            } else if(cls == Class.class)
+                k = ((Class) key).getName();
+            else
+                k = key.toString();
+
+            serializerProvider.defaultSerializeField(k, entry.getValue(), jsonGenerator);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JsonParserConcat.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JsonParserConcat.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JsonParserConcat.java
new file mode 100644
index 0000000..6b19e48
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JsonParserConcat.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.graphson;
+
+import org.apache.tinkerpop.shaded.jackson.core.JsonParseException;
+import org.apache.tinkerpop.shaded.jackson.core.JsonParser;
+import org.apache.tinkerpop.shaded.jackson.core.JsonToken;
+import org.apache.tinkerpop.shaded.jackson.core.util.JsonParserSequence;
+
+import java.io.IOException;
+import java.util.ArrayList;
+
+/**
+ * Utility class to easily concatenate multiple JsonParsers. This class had to be implemented because the class it is
+ * extending, {@link JsonParserSequence}, inevitably skips a token when switching from one empty parser to a new one.
+ * I.e. it is automatically calling {@link JsonParser#nextToken()} when switching to the new parser, ignoring
+ * the current token.
+ *
+ * This class is used for high performance in GraphSON when trying to detect types.
+ *
+ * @author Kevin Gallardo (https://kgdo.me)
+ */
+public class JsonParserConcat extends JsonParserSequence {
+    protected JsonParserConcat(JsonParser[] parsers) {
+        super(parsers);
+    }
+
+    public static JsonParserConcat createFlattened(JsonParser first, JsonParser second) {
+        if (!(first instanceof JsonParserConcat) && !(second instanceof JsonParserConcat)) {
+            return new JsonParserConcat(new JsonParser[]{first, second});
+        } else {
+            ArrayList p = new ArrayList();
+            if (first instanceof JsonParserConcat) {
+                ((JsonParserConcat) first).addFlattenedActiveParsers(p);
+            } else {
+                p.add(first);
+            }
+
+            if (second instanceof JsonParserConcat) {
+                ((JsonParserConcat) second).addFlattenedActiveParsers(p);
+            } else {
+                p.add(second);
+            }
+            return new JsonParserConcat((JsonParser[]) p.toArray(new JsonParser[p.size()]));
+        }
+    }
+
+    @Override
+    public JsonToken nextToken() throws IOException, JsonParseException {
+        JsonToken t = this.delegate.nextToken();
+        if (t != null) {
+            return t;
+        } else {
+            do {
+                if (!this.switchToNext()) {
+                    return null;
+                }
+                // call getCurrentToken() instead of nextToken() in JsonParserSequence.
+                t = this.delegate.getCurrentToken() == null
+                        ? this.nextToken()
+                        : this.getCurrentToken();
+            } while (t == null);
+
+            return t;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/LegacyGraphSONReader.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/LegacyGraphSONReader.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/LegacyGraphSONReader.java
index f015193..679c827 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/LegacyGraphSONReader.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/LegacyGraphSONReader.java
@@ -19,10 +19,10 @@
 package org.apache.tinkerpop.gremlin.structure.io.graphson;
 
 import org.apache.tinkerpop.gremlin.structure.Direction;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.io.GraphReader;


[04/19] tinkerpop git commit: TINKERPOP-1274: GraphSON 2.0.

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead-v2d0-typed.json
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead-v2d0-typed.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead-v2d0-typed.json
new file mode 100644
index 0000000..3b24d37
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead-v2d0-typed.json
@@ -0,0 +1,808 @@
+{"id":{"@type":"gremlin:int32","@value":1},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":3059},"outV":{"@type":"gremlin:int32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":276},"outV":{"@type":"gremlin:int32","@value":5},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3704},"outV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":4383},"outV":{"@type":"gremlin:int32","@value":62},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":0},"inV":{"@type":"gremlin:int32","@value":2},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1},"inV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:int32","@
 value":2}}},{"id":{"@type":"gremlin:int32","@value":2},"inV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3},"inV":{"@type":"gremlin:int32","@value":5},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4},"inV":{"@type":"gremlin:int32","@value":6},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}],"sungBy":[{"id":{"@type":"gremlin:int32","@value":7612},"inV":{"@type":"gremlin:int32","@value":340}}],"writtenBy":[{"id":{"@type":"gremlin:int32","@value":7611},"inV":{"@type":"gremlin:int32","@value":527}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":0},"value":"HEY BO DIDDLEY"}],"songType":[{"id":{"@type":"gremlin:int64","@value":2},"value":"cover"}],"performances":[{"id":{"@type":"gremlin:int64","@value":1},"value":{"@type":"gremlin:int32","@value":5}}]}}
+{"id":{"@type":"gremlin:int32","@value":2},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":0},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":323},"outV":{"@type":"gremlin:int32","@value":34},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":6190},"inV":{"@type":"gremlin:int32","@value":123},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6191},"inV":{"@type":"gremlin:int32","@value":50},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}],"sungBy":[{"id":{"@type":"gremlin:int32","@value":7666},"inV":{"@type":"gremlin:int32","@value":525}}],"writtenBy":[{"id":{"@type":"gremlin:int32","@value":7665},"inV":{"@type":"gremlin:int32","@value":525}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":3},"value":"IM 
 A MAN"}],"songType":[{"id":{"@type":"gremlin:int64","@value":5},"value":"cover"}],"performances":[{"id":{"@type":"gremlin:int64","@value":4},"value":{"@type":"gremlin:int32","@value":1}}]}}
+{"id":{"@type":"gremlin:int32","@value":3},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":1},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":2051},"outV":{"@type":"gremlin:int32","@value":92},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":1412},"outV":{"@type":"gremlin:int32","@value":83},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":6669},"outV":{"@type":"gremlin:int32","@value":12},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":526},"outV":{"@type":"gremlin:int32","@value":120},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":910},"outV":{"@type":"gremlin:int32","@value":91},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id"
 :{"@type":"gremlin:int32","@value":1166},"outV":{"@type":"gremlin:int32","@value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":6286},"outV":{"@type":"gremlin:int32","@value":49},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":273},"outV":{"@type":"gremlin:int32","@value":5},"properties":{"weight":{"@type":"gremlin:int32","@value":40}}},{"id":{"@type":"gremlin:int32","@value":2194},"outV":{"@type":"gremlin:int32","@value":235},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1684},"outV":{"@type":"gremlin:int32","@value":124},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1941},"outV":{"@type":"gremlin:int32","@value":148},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3221},"outV":{"@type":"gremlin:int32","@va
 lue":63},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2712},"outV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":6425},"outV":{"@type":"gremlin:int32","@value":134},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5787},"outV":{"@type":"gremlin:int32","@value":76},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5148},"outV":{"@type":"gremlin:int32","@value":125},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":6692},"outV":{"@type":"gremlin:int32","@value":141},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6310},"outV":{"@type":"gremlin:int32","@value":123},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id
 ":{"@type":"gremlin:int32","@value":6448},"outV":{"@type":"gremlin:int32","@value":187},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":2225},"outV":{"@type":"gremlin:int32","@value":226},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5042},"outV":{"@type":"gremlin:int32","@value":209},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4789},"outV":{"@type":"gremlin:int32","@value":114},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":1464},"outV":{"@type":"gremlin:int32","@value":81},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2232},"outV":{"@type":"gremlin:int32","@value":215},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4665},"outV":{"@type":"gremlin:int32",
 "@value":154},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2235},"outV":{"@type":"gremlin:int32","@value":29},"properties":{"weight":{"@type":"gremlin:int32","@value":163}}},{"id":{"@type":"gremlin:int32","@value":6208},"outV":{"@type":"gremlin:int32","@value":319},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":706},"outV":{"@type":"gremlin:int32","@value":206},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":835},"outV":{"@type":"gremlin:int32","@value":171},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5188},"outV":{"@type":"gremlin:int32","@value":99},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1862},"outV":{"@type":"gremlin:int32","@value":94},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}}
 ,{"id":{"@type":"gremlin:int32","@value":1735},"outV":{"@type":"gremlin:int32","@value":82},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6343},"outV":{"@type":"gremlin:int32","@value":21},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4937},"outV":{"@type":"gremlin:int32","@value":277},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3276},"outV":{"@type":"gremlin:int32","@value":160},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3149},"outV":{"@type":"gremlin:int32","@value":104},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1358},"outV":{"@type":"gremlin:int32","@value":130},"properties":{"weight":{"@type":"gremlin:int32","@value":18}}},{"id":{"@type":"gremlin:int32","@value":4304},"outV":{"@type":"gremlin:in
 t32","@value":110},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1105},"outV":{"@type":"gremlin:int32","@value":59},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":722},"outV":{"@type":"gremlin:int32","@value":80},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4182},"outV":{"@type":"gremlin:int32","@value":54},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1499},"outV":{"@type":"gremlin:int32","@value":164},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":2397},"outV":{"@type":"gremlin:int32","@value":179},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":351},"outV":{"@type":"gremlin:int32","@value":178},"properties":{"weight":{"@type":"gremlin:int32","@value":1}
 }},{"id":{"@type":"gremlin:int32","@value":6623},"outV":{"@type":"gremlin:int32","@value":127},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":2018},"outV":{"@type":"gremlin:int32","@value":149},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":7011},"outV":{"@type":"gremlin:int32","@value":89},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5348},"outV":{"@type":"gremlin:int32","@value":165},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2278},"outV":{"@type":"gremlin:int32","@value":25},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":1255},"outV":{"@type":"gremlin:int32","@value":27},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3048},"outV":{"@type":"gremlin:in
 t32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":13}}},{"id":{"@type":"gremlin:int32","@value":5867},"outV":{"@type":"gremlin:int32","@value":96},"properties":{"weight":{"@type":"gremlin:int32","@value":116}}},{"id":{"@type":"gremlin:int32","@value":364},"outV":{"@type":"gremlin:int32","@value":74},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":492},"outV":{"@type":"gremlin:int32","@value":98},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3948},"outV":{"@type":"gremlin:int32","@value":138},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":4335},"outV":{"@type":"gremlin:int32","@value":62},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3312},"outV":{"@type":"gremlin:int32","@value":252},"properties":{"weight":{"@type":"gremlin:int32","@value":
 1}}},{"id":{"@type":"gremlin:int32","@value":5745},"outV":{"@type":"gremlin:int32","@value":129},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4596},"outV":{"@type":"gremlin:int32","@value":85},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5367},"outV":{"@type":"gremlin:int32","@value":132},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":633},"outV":{"@type":"gremlin:int32","@value":23},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":891},"outV":{"@type":"gremlin:int32","@value":140},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5375},"outV":{"@type":"gremlin:int32","@value":69},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6143},"outV":{"@type":"gremlin:in
 t32","@value":289},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":3712},"inV":{"@type":"gremlin:int32","@value":27},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3713},"inV":{"@type":"gremlin:int32","@value":110},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3714},"inV":{"@type":"gremlin:int32","@value":215},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3715},"inV":{"@type":"gremlin:int32","@value":127},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":3716},"inV":{"@type":"gremlin:int32","@value":83},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3717},"inV":{"@type":"gremlin:int32","@value":103},"properties":{"weight":{"@type":"grem
 lin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3718},"inV":{"@type":"gremlin:int32","@value":68},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3719},"inV":{"@type":"gremlin:int32","@value":134},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3720},"inV":{"@type":"gremlin:int32","@value":25},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":3721},"inV":{"@type":"gremlin:int32","@value":125},"properties":{"weight":{"@type":"gremlin:int32","@value":54}}},{"id":{"@type":"gremlin:int32","@value":3722},"inV":{"@type":"gremlin:int32","@value":130},"properties":{"weight":{"@type":"gremlin:int32","@value":26}}},{"id":{"@type":"gremlin:int32","@value":3723},"inV":{"@type":"gremlin:int32","@value":141},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3724},"inV":{
 "@type":"gremlin:int32","@value":145},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3725},"inV":{"@type":"gremlin:int32","@value":319},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3726},"inV":{"@type":"gremlin:int32","@value":12},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3727},"inV":{"@type":"gremlin:int32","@value":160},"properties":{"weight":{"@type":"gremlin:int32","@value":37}}},{"id":{"@type":"gremlin:int32","@value":3728},"inV":{"@type":"gremlin:int32","@value":70},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3729},"inV":{"@type":"gremlin:int32","@value":123},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3730},"inV":{"@type":"gremlin:int32","@value":129},"properties":{"weight":{"@type":"gremlin:i
 nt32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3731},"inV":{"@type":"gremlin:int32","@value":30},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3732},"inV":{"@type":"gremlin:int32","@value":148},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3733},"inV":{"@type":"gremlin:int32","@value":211},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3734},"inV":{"@type":"gremlin:int32","@value":87},"properties":{"weight":{"@type":"gremlin:int32","@value":13}}},{"id":{"@type":"gremlin:int32","@value":3735},"inV":{"@type":"gremlin:int32","@value":164},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3736},"inV":{"@type":"gremlin:int32","@value":64},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3737},"inV":{"@type":
 "gremlin:int32","@value":320},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3738},"inV":{"@type":"gremlin:int32","@value":61},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3739},"inV":{"@type":"gremlin:int32","@value":210},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3740},"inV":{"@type":"gremlin:int32","@value":50},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":3741},"inV":{"@type":"gremlin:int32","@value":128},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3742},"inV":{"@type":"gremlin:int32","@value":315},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3743},"inV":{"@type":"gremlin:int32","@value":261},"properties":{"weight":{"@type":"gremlin:int32","@v
 alue":1}}},{"id":{"@type":"gremlin:int32","@value":3744},"inV":{"@type":"gremlin:int32","@value":213},"properties":{"weight":{"@type":"gremlin:int32","@value":13}}},{"id":{"@type":"gremlin:int32","@value":3745},"inV":{"@type":"gremlin:int32","@value":72},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3746},"inV":{"@type":"gremlin:int32","@value":38},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3747},"inV":{"@type":"gremlin:int32","@value":204},"properties":{"weight":{"@type":"gremlin:int32","@value":14}}},{"id":{"@type":"gremlin:int32","@value":3748},"inV":{"@type":"gremlin:int32","@value":62},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3749},"inV":{"@type":"gremlin:int32","@value":150},"properties":{"weight":{"@type":"gremlin:int32","@value":8}}},{"id":{"@type":"gremlin:int32","@value":3750},"inV":{"@type":"gremlin
 :int32","@value":309},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3751},"inV":{"@type":"gremlin:int32","@value":131},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3752},"inV":{"@type":"gremlin:int32","@value":151},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3753},"inV":{"@type":"gremlin:int32","@value":321},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3754},"inV":{"@type":"gremlin:int32","@value":90},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3755},"inV":{"@type":"gremlin:int32","@value":82},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3756},"inV":{"@type":"gremlin:int32","@value":120},"properties":{"weight":{"@type":"gremlin:int32","@value":1}
 }},{"id":{"@type":"gremlin:int32","@value":3757},"inV":{"@type":"gremlin:int32","@value":46},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":3758},"inV":{"@type":"gremlin:int32","@value":157},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":3759},"inV":{"@type":"gremlin:int32","@value":59},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3760},"inV":{"@type":"gremlin:int32","@value":81},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3761},"inV":{"@type":"gremlin:int32","@value":86},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":3762},"inV":{"@type":"gremlin:int32","@value":140},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3763},"inV":{"@type":"gremlin:int32","@v
 alue":201},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3764},"inV":{"@type":"gremlin:int32","@value":214},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3765},"inV":{"@type":"gremlin:int32","@value":185},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3766},"inV":{"@type":"gremlin:int32","@value":216},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3767},"inV":{"@type":"gremlin:int32","@value":217},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3768},"inV":{"@type":"gremlin:int32","@value":236},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":3769},"inV":{"@type":"gremlin:int32","@value":193},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":
 {"@type":"gremlin:int32","@value":3770},"inV":{"@type":"gremlin:int32","@value":79},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3771},"inV":{"@type":"gremlin:int32","@value":84},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3772},"inV":{"@type":"gremlin:int32","@value":23},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3773},"inV":{"@type":"gremlin:int32","@value":31},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3774},"inV":{"@type":"gremlin:int32","@value":240},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3775},"inV":{"@type":"gremlin:int32","@value":292},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3776},"inV":{"@type":"gremlin:int32","@value":9},
 "properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3777},"inV":{"@type":"gremlin:int32","@value":259},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3694},"inV":{"@type":"gremlin:int32","@value":5},"properties":{"weight":{"@type":"gremlin:int32","@value":57}}},{"id":{"@type":"gremlin:int32","@value":3695},"inV":{"@type":"gremlin:int32","@value":114},"properties":{"weight":{"@type":"gremlin:int32","@value":30}}},{"id":{"@type":"gremlin:int32","@value":3696},"inV":{"@type":"gremlin:int32","@value":74},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3697},"inV":{"@type":"gremlin:int32","@value":78},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3698},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"grem
 lin:int32","@value":3699},"inV":{"@type":"gremlin:int32","@value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3700},"inV":{"@type":"gremlin:int32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":3701},"inV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3702},"inV":{"@type":"gremlin:int32","@value":317},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3703},"inV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":3704},"inV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3705},"inV":{"@type":"gremlin:int32","@value":21},"properties":{"
 weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3706},"inV":{"@type":"gremlin:int32","@value":57},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3707},"inV":{"@type":"gremlin:int32","@value":122},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3708},"inV":{"@type":"gremlin:int32","@value":318},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3709},"inV":{"@type":"gremlin:int32","@value":94},"properties":{"weight":{"@type":"gremlin:int32","@value":26}}},{"id":{"@type":"gremlin:int32","@value":3710},"inV":{"@type":"gremlin:int32","@value":96},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":3711},"inV":{"@type":"gremlin:int32","@value":124},"properties":{"weight":{"@type":"gremlin:int32","@value":15}}}],"sungBy":[{"id":{"@type":"gremli
 n:int32","@value":7808},"inV":{"@type":"gremlin:int32","@value":351}}],"writtenBy":[{"id":{"@type":"gremlin:int32","@value":7807},"inV":{"@type":"gremlin:int32","@value":671}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":6},"value":"NOT FADE AWAY"}],"songType":[{"id":{"@type":"gremlin:int64","@value":8},"value":"cover"}],"performances":[{"id":{"@type":"gremlin:int64","@value":7},"value":{"@type":"gremlin:int32","@value":531}}]}}
+{"id":{"@type":"gremlin:int32","@value":4},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":128},"outV":{"@type":"gremlin:int32","@value":97},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1664},"outV":{"@type":"gremlin:int32","@value":267},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":899},"outV":{"@type":"gremlin:int32","@value":140},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1667},"outV":{"@type":"gremlin:int32","@value":124},"properties":{"weight":{"@type":"gremlin:int32","@value":15}}},{"id":{"@type":"gremlin:int32","@value":4099},"outV":{"@type":"gremlin:int32","@value":48},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"
 id":{"@type":"gremlin:int32","@value":1156},"outV":{"@type":"gremlin:int32","@value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":16}}},{"id":{"@type":"gremlin:int32","@value":773},"outV":{"@type":"gremlin:int32","@value":122},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":6534},"outV":{"@type":"gremlin:int32","@value":242},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1032},"outV":{"@type":"gremlin:int32","@value":73},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6664},"outV":{"@type":"gremlin:int32","@value":12},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5129},"outV":{"@type":"gremlin:int32","@value":222},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5387},"outV":{"@type":"gremlin:int32",
 "@value":69},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5517},"outV":{"@type":"gremlin:int32","@value":43},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5006},"outV":{"@type":"gremlin:int32","@value":30},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6030},"outV":{"@type":"gremlin:int32","@value":204},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":2063},"outV":{"@type":"gremlin:int32","@value":92},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":915},"outV":{"@type":"gremlin:int32","@value":91},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6940},"outV":{"@type":"gremlin:int32","@value":84},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id
 ":{"@type":"gremlin:int32","@value":2464},"outV":{"@type":"gremlin:int32","@value":68},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5795},"outV":{"@type":"gremlin:int32","@value":76},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3620},"outV":{"@type":"gremlin:int32","@value":24},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":4772},"outV":{"@type":"gremlin:int32","@value":114},"properties":{"weight":{"@type":"gremlin:int32","@value":25}}},{"id":{"@type":"gremlin:int32","@value":2982},"outV":{"@type":"gremlin:int32","@value":14},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3367},"outV":{"@type":"gremlin:int32","@value":184},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":2345},"outV":{"@type":"gremlin:int32","@
 value":87},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":2861},"outV":{"@type":"gremlin:int32","@value":101},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":1840},"outV":{"@type":"gremlin:int32","@value":275},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5425},"outV":{"@type":"gremlin:int32","@value":102},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":180},"outV":{"@type":"gremlin:int32","@value":70},"properties":{"weight":{"@type":"gremlin:int32","@value":46}}},{"id":{"@type":"gremlin:int32","@value":2613},"outV":{"@type":"gremlin:int32","@value":158},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5434},"outV":{"@type":"gremlin:int32","@value":217},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{
 "id":{"@type":"gremlin:int32","@value":5562},"outV":{"@type":"gremlin:int32","@value":162},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":1469},"outV":{"@type":"gremlin:int32","@value":81},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":446},"outV":{"@type":"gremlin:int32","@value":38},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":2494},"outV":{"@type":"gremlin:int32","@value":90},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3266},"outV":{"@type":"gremlin:int32","@value":160},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":326},"outV":{"@type":"gremlin:int32","@value":34},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":583},"outV":{"@type":"gremlin:int32","@
 value":120},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6855},"outV":{"@type":"gremlin:int32","@value":64},"properties":{"weight":{"@type":"gremlin:int32","@value":12}}},{"id":{"@type":"gremlin:int32","@value":73},"outV":{"@type":"gremlin:int32","@value":46},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":4425},"outV":{"@type":"gremlin:int32","@value":212},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1613},"outV":{"@type":"gremlin:int32","@value":210},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":4941},"outV":{"@type":"gremlin:int32","@value":86},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6350},"outV":{"@type":"gremlin:int32","@value":21},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id
 ":{"@type":"gremlin:int32","@value":3535},"outV":{"@type":"gremlin:int32","@value":201},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":980},"outV":{"@type":"gremlin:int32","@value":11},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":1494},"outV":{"@type":"gremlin:int32","@value":164},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5206},"outV":{"@type":"gremlin:int32","@value":99},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5847},"outV":{"@type":"gremlin:int32","@value":61},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6490},"outV":{"@type":"gremlin:int32","@value":187},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2781},"outV":{"@type":"gremlin:int32","@v
 alue":15},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":5600},"outV":{"@type":"gremlin:int32","@value":42},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":353},"outV":{"@type":"gremlin:int32","@value":74},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":5474},"outV":{"@type":"gremlin:int32","@value":79},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1891},"outV":{"@type":"gremlin:int32","@value":103},"properties":{"weight":{"@type":"gremlin:int32","@value":19}}},{"id":{"@type":"gremlin:int32","@value":3811},"outV":{"@type":"gremlin:int32","@value":88},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5989},"outV":{"@type":"gremlin:int32","@value":50},"properties":{"weight":{"@type":"gremlin:int32","@value":12}}},{"id"
 :{"@type":"gremlin:int32","@value":4327},"outV":{"@type":"gremlin:int32","@value":110},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":2538},"outV":{"@type":"gremlin:int32","@value":57},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3050},"outV":{"@type":"gremlin:int32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":13}}},{"id":{"@type":"gremlin:int32","@value":4970},"outV":{"@type":"gremlin:int32","@value":236},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2283},"outV":{"@type":"gremlin:int32","@value":25},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":236},"outV":{"@type":"gremlin:int32","@value":145},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6126},"outV":{"@type":"gremlin:int32","@
 value":72},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5232},"outV":{"@type":"gremlin:int32","@value":214},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":4594},"outV":{"@type":"gremlin:int32","@value":85},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1652},"outV":{"@type":"gremlin:int32","@value":213},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":4084},"outV":{"@type":"gremlin:int32","@value":109},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":629},"outV":{"@type":"gremlin:int32","@value":23},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":3701},"outV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id
 ":{"@type":"gremlin:int32","@value":5621},"outV":{"@type":"gremlin:int32","@value":22},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":7029},"outV":{"@type":"gremlin:int32","@value":89},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5238},"outV":{"@type":"gremlin:int32","@value":32},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":2684},"outV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":3325},"outV":{"@type":"gremlin:int32","@value":268},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":5120},"inV":{"@type":"gremlin:int32","@value":40},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":5121},"inV":{"@type
 ":"gremlin:int32","@value":33},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5122},"inV":{"@type":"gremlin:int32","@value":79},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5123},"inV":{"@type":"gremlin:int32","@value":292},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5071},"inV":{"@type":"gremlin:int32","@value":50},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":5072},"inV":{"@type":"gremlin:int32","@value":12},"properties":{"weight":{"@type":"gremlin:int32","@value":26}}},{"id":{"@type":"gremlin:int32","@value":5073},"inV":{"@type":"gremlin:int32","@value":18},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":5074},"inV":{"@type":"gremlin:int32","@value":24},"properties":{"weight":{"@type":"gremlin:int32","@va
 lue":9}}},{"id":{"@type":"gremlin:int32","@value":5075},"inV":{"@type":"gremlin:int32","@value":23},"properties":{"weight":{"@type":"gremlin:int32","@value":63}}},{"id":{"@type":"gremlin:int32","@value":5076},"inV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":12}}},{"id":{"@type":"gremlin:int32","@value":5077},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":5078},"inV":{"@type":"gremlin:int32","@value":11},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5079},"inV":{"@type":"gremlin:int32","@value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":18}}},{"id":{"@type":"gremlin:int32","@value":5080},"inV":{"@type":"gremlin:int32","@value":22},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5081},"inV":{"@type":"gremlin:in
 t32","@value":16},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5082},"inV":{"@type":"gremlin:int32","@value":49},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5083},"inV":{"@type":"gremlin:int32","@value":25},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5084},"inV":{"@type":"gremlin:int32","@value":51},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5085},"inV":{"@type":"gremlin:int32","@value":15},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5086},"inV":{"@type":"gremlin:int32","@value":112},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":5087},"inV":{"@type":"gremlin:int32","@value":121},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"i
 d":{"@type":"gremlin:int32","@value":5088},"inV":{"@type":"gremlin:int32","@value":32},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":5089},"inV":{"@type":"gremlin:int32","@value":68},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5090},"inV":{"@type":"gremlin:int32","@value":120},"properties":{"weight":{"@type":"gremlin:int32","@value":77}}},{"id":{"@type":"gremlin:int32","@value":5091},"inV":{"@type":"gremlin:int32","@value":103},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5092},"inV":{"@type":"gremlin:int32","@value":42},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5093},"inV":{"@type":"gremlin:int32","@value":85},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":5094},"inV":{"@type":"gremlin:int32","@value"
 :76},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":5095},"inV":{"@type":"gremlin:int32","@value":181},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5096},"inV":{"@type":"gremlin:int32","@value":14},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5097},"inV":{"@type":"gremlin:int32","@value":122},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5098},"inV":{"@type":"gremlin:int32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5099},"inV":{"@type":"gremlin:int32","@value":96},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5100},"inV":{"@type":"gremlin:int32","@value":82},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":
 "gremlin:int32","@value":5101},"inV":{"@type":"gremlin:int32","@value":110},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5102},"inV":{"@type":"gremlin:int32","@value":19},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":5103},"inV":{"@type":"gremlin:int32","@value":129},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5104},"inV":{"@type":"gremlin:int32","@value":84},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5105},"inV":{"@type":"gremlin:int32","@value":88},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":5106},"inV":{"@type":"gremlin:int32","@value":97},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5107},"inV":{"@type":"gremlin:int32","@value":114},"proper
 ties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5108},"inV":{"@type":"gremlin:int32","@value":30},"properties":{"weight":{"@type":"gremlin:int32","@value":8}}},{"id":{"@type":"gremlin:int32","@value":5109},"inV":{"@type":"gremlin:int32","@value":31},"properties":{"weight":{"@type":"gremlin:int32","@value":8}}},{"id":{"@type":"gremlin:int32","@value":5110},"inV":{"@type":"gremlin:int32","@value":69},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":5111},"inV":{"@type":"gremlin:int32","@value":127},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5112},"inV":{"@type":"gremlin:int32","@value":60},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5113},"inV":{"@type":"gremlin:int32","@value":39},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32
 ","@value":5114},"inV":{"@type":"gremlin:int32","@value":21},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5115},"inV":{"@type":"gremlin:int32","@value":117},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5116},"inV":{"@type":"gremlin:int32","@value":78},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5117},"inV":{"@type":"gremlin:int32","@value":38},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5118},"inV":{"@type":"gremlin:int32","@value":169},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5119},"inV":{"@type":"gremlin:int32","@value":118},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}],"sungBy":[{"id":{"@type":"gremlin:int32","@value":7064},"inV":{"@type":"gremlin:int32","@value":340}}],"writte
 nBy":[{"id":{"@type":"gremlin:int32","@value":7063},"inV":{"@type":"gremlin:int32","@value":339}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":9},"value":"BERTHA"}],"songType":[{"id":{"@type":"gremlin:int64","@value":11},"value":"original"}],"performances":[{"id":{"@type":"gremlin:int64","@value":10},"value":{"@type":"gremlin:int32","@value":394}}]}}
+{"id":{"@type":"gremlin:int32","@value":5},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":194},"outV":{"@type":"gremlin:int32","@value":70},"properties":{"weight":{"@type":"gremlin:int32","@value":8}}},{"id":{"@type":"gremlin:int32","@value":962},"outV":{"@type":"gremlin:int32","@value":67},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":3},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5446},"outV":{"@type":"gremlin:int32","@value":231},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":6344},"outV":{"@type":"gremlin:int32","@value":21},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":1738},"outV":{"@type":"gremlin:int32","@value":82},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id"
 :{"@type":"gremlin:int32","@value":6666},"outV":{"@type":"gremlin:int32","@value":12},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1867},"outV":{"@type":"gremlin:int32","@value":94},"properties":{"weight":{"@type":"gremlin:int32","@value":15}}},{"id":{"@type":"gremlin:int32","@value":4300},"outV":{"@type":"gremlin:int32","@value":110},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":847},"outV":{"@type":"gremlin:int32","@value":171},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2832},"outV":{"@type":"gremlin:int32","@value":101},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":6032},"outV":{"@type":"gremlin:int32","@value":115},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1170},"outV":{"@type":"gremlin:int32","@
 value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5330},"outV":{"@type":"gremlin:int32","@value":238},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1491},"outV":{"@type":"gremlin:int32","@value":164},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":1429},"outV":{"@type":"gremlin:int32","@value":83},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3033},"outV":{"@type":"gremlin:int32","@value":14},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6298},"outV":{"@type":"gremlin:int32","@value":49},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1373},"outV":{"@type":"gremlin:int32","@value":130},"properties":{"weight":{"@type":"gremlin:int32","@value":11}}},{"
 id":{"@type":"gremlin:int32","@value":4447},"outV":{"@type":"gremlin:int32","@value":113},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5151},"outV":{"@type":"gremlin:int32","@value":125},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":5343},"outV":{"@type":"gremlin:int32","@value":165},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6431},"outV":{"@type":"gremlin:int32","@value":134},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":1953},"outV":{"@type":"gremlin:int32","@value":148},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":1634},"outV":{"@type":"gremlin:int32","@value":210},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2274},"outV":{"@type":"gremlin:int
 32","@value":25},"properties":{"weight":{"@type":"gremlin:int32","@value":8}}},{"id":{"@type":"gremlin:int32","@value":100},"outV":{"@type":"gremlin:int32","@value":46},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":933},"outV":{"@type":"gremlin:int32","@value":91},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2021},"outV":{"@type":"gremlin:int32","@value":149},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6694},"outV":{"@type":"gremlin:int32","@value":141},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":4009},"outV":{"@type":"gremlin:int32","@value":225},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":682},"outV":{"@type":"gremlin:int32","@value":219},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}
 ,{"id":{"@type":"gremlin:int32","@value":3694},"outV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:int32","@value":57}}},{"id":{"@type":"gremlin:int32","@value":4718},"outV":{"@type":"gremlin:int32","@value":186},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":3055},"outV":{"@type":"gremlin:int32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":2480},"outV":{"@type":"gremlin:int32","@value":68},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2736},"outV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5426},"outV":{"@type":"gremlin:int32","@value":102},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6899},"outV":{"@type":"gremlin:int3
 2","@value":147},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5879},"outV":{"@type":"gremlin:int32","@value":96},"properties":{"weight":{"@type":"gremlin:int32","@value":22}}},{"id":{"@type":"gremlin:int32","@value":6201},"outV":{"@type":"gremlin:int32","@value":319},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5370},"outV":{"@type":"gremlin:int32","@value":132},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":700},"outV":{"@type":"gremlin:int32","@value":206},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2236},"outV":{"@type":"gremlin:int32","@value":29},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":4604},"outV":{"@type":"gremlin:int32","@value":85},"properties":{"weight":{"@type":"gremlin:int32","@value":2}
 }},{"id":{"@type":"gremlin:int32","@value":5759},"outV":{"@type":"gremlin:int32","@value":129},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":273},"inV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:int32","@value":40}}},{"id":{"@type":"gremlin:int32","@value":274},"inV":{"@type":"gremlin:int32","@value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":275},"inV":{"@type":"gremlin:int32","@value":114},"properties":{"weight":{"@type":"gremlin:int32","@value":40}}},{"id":{"@type":"gremlin:int32","@value":276},"inV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":277},"inV":{"@type":"gremlin:int32","@value":74},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":278},"inV":{"@type":
 "gremlin:int32","@value":122},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":279},"inV":{"@type":"gremlin:int32","@value":133},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":280},"inV":{"@type":"gremlin:int32","@value":83},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":281},"inV":{"@type":"gremlin:int32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":282},"inV":{"@type":"gremlin:int32","@value":159},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":283},"inV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":284},"inV":{"@type":"gremlin:int32","@value":25},"properties":{"weight":{"@type":"gremlin:int32","@value":1
 9}}},{"id":{"@type":"gremlin:int32","@value":285},"inV":{"@type":"gremlin:int32","@value":96},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":286},"inV":{"@type":"gremlin:int32","@value":160},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":287},"inV":{"@type":"gremlin:int32","@value":32},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":288},"inV":{"@type":"gremlin:int32","@value":120},"properties":{"weight":{"@type":"gremlin:int32","@value":16}}},{"id":{"@type":"gremlin:int32","@value":289},"inV":{"@type":"gremlin:int32","@value":50},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":290},"inV":{"@type":"gremlin:int32","@value":116},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":291},"inV":{"@type":"gremlin:int32","@val
 ue":127},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":292},"inV":{"@type":"gremlin:int32","@value":65},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":293},"inV":{"@type":"gremlin:int32","@value":130},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":294},"inV":{"@type":"gremlin:int32","@value":125},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":295},"inV":{"@type":"gremlin:int32","@value":70},"properties":{"weight":{"@type":"gremlin:int32","@value":13}}},{"id":{"@type":"gremlin:int32","@value":296},"inV":{"@type":"gremlin:int32","@value":134},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":297},"inV":{"@type":"gremlin:int32","@value":161},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":
 "gremlin:int32","@value":298},"inV":{"@type":"gremlin:int32","@value":162},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":299},"inV":{"@type":"gremlin:int32","@value":124},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":300},"inV":{"@type":"gremlin:int32","@value":38},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":301},"inV":{"@type":"gremlin:int32","@value":29},"properties":{"weight":{"@type":"gremlin:int32","@value":11}}},{"id":{"@type":"gremlin:int32","@value":302},"inV":{"@type":"gremlin:int32","@value":163},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":303},"inV":{"@type":"gremlin:int32","@value":94},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":304},"inV":{"@type":"gremlin:int32","@value":85},"properties":
 {"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":305},"inV":{"@type":"gremlin:int32","@value":164},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":306},"inV":{"@type":"gremlin:int32","@value":64},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":307},"inV":{"@type":"gremlin:int32","@value":150},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":308},"inV":{"@type":"gremlin:int32","@value":165},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":309},"inV":{"@type":"gremlin:int32","@value":92},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":310},"inV":{"@type":"gremlin:int32","@value":140},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value
 ":311},"inV":{"@type":"gremlin:int32","@value":166},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}],"sungBy":[{"id":{"@type":"gremlin:int32","@value":7582},"inV":{"@type":"gremlin:int32","@value":340}}],"writtenBy":[{"id":{"@type":"gremlin:int32","@value":7581},"inV":{"@type":"gremlin:int32","@value":446}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":12},"value":"GOING DOWN THE ROAD FEELING BAD"}],"songType":[{"id":{"@type":"gremlin:int64","@value":14},"value":"cover"}],"performances":[{"id":{"@type":"gremlin:int64","@value":13},"value":{"@type":"gremlin:int32","@value":293}}]}}
+{"id":{"@type":"gremlin:int32","@value":6},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":4},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2023},"outV":{"@type":"gremlin:int32","@value":282},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":2406},"inV":{"@type":"gremlin:int32","@value":293},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2407},"inV":{"@type":"gremlin:int32","@value":96},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}],"sungBy":[{"id":{"@type":"gremlin:int32","@value":7782},"inV":{"@type":"gremlin:int32","@value":351}}],"writtenBy":[{"id":{"@type":"gremlin:int32","@value":7781},"inV":{"@type":"gremlin:int32","@value":527}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":15},"value":"
 MONA"}],"songType":[{"id":{"@type":"gremlin:int64","@value":17},"value":"cover"}],"performances":[{"id":{"@type":"gremlin:int64","@value":16},"value":{"@type":"gremlin:int32","@value":1}}]}}
+{"id":{"@type":"gremlin:int32","@value":7},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":2607},"outV":{"@type":"gremlin:int32","@value":295},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":5},"inV":{"@type":"gremlin:int32","@value":8},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":18},"value":"WHERE HAVE THE HEROES GONE"}],"songType":[{"id":{"@type":"gremlin:int64","@value":20},"value":""}],"performances":[{"id":{"@type":"gremlin:int64","@value":19},"value":{"@type":"gremlin:int32","@value":0}}]}}
+{"id":{"@type":"gremlin:int32","@value":8},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":4705},"outV":{"@type":"gremlin:int32","@value":111},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5},"outV":{"@type":"gremlin:int32","@value":7},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5901},"outV":{"@type":"gremlin:int32","@value":96},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":2976},"inV":{"@type":"gremlin:int32","@value":302},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2977},"inV":{"@type":"gremlin:int32","@value":96},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2978},"inV":{"@type":"gremlin:int32","@value":72},"properties":{"weight":{"@type":"gremlin:in
 t32","@value":1}}}],"sungBy":[{"id":{"@type":"gremlin:int32","@value":7814},"inV":{"@type":"gremlin:int32","@value":351}}],"writtenBy":[{"id":{"@type":"gremlin:int32","@value":7813},"inV":{"@type":"gremlin:int32","@value":674}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":21},"value":"OH BOY"}],"songType":[{"id":{"@type":"gremlin:int64","@value":23},"value":"cover"}],"performances":[{"id":{"@type":"gremlin:int64","@value":22},"value":{"@type":"gremlin:int32","@value":2}}]}}
+{"id":{"@type":"gremlin:int32","@value":9},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":3776},"outV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":65},"outV":{"@type":"gremlin:int32","@value":46},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":1923},"outV":{"@type":"gremlin:int32","@value":103},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5956},"outV":{"@type":"gremlin:int32","@value":50},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3077},"outV":{"@type":"gremlin:int32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5832},"outV":{"@type":"gremlin:int32","@value":76},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{
 "id":{"@type":"gremlin:int32","@value":1161},"outV":{"@type":"gremlin:int32","@value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":8}}},{"id":{"@type":"gremlin:int32","@value":2699},"outV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":6539},"outV":{"@type":"gremlin:int32","@value":55},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6667},"outV":{"@type":"gremlin:int32","@value":12},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":2578},"outV":{"@type":"gremlin:int32","@value":57},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":787},"outV":{"@type":"gremlin:int32","@value":122},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3542},"outV":{"@type":"gremlin:int32","@
 value":201},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2775},"outV":{"@type":"gremlin:int32","@value":15},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":2840},"outV":{"@type":"gremlin:int32","@value":101},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":4953},"outV":{"@type":"gremlin:int32","@value":86},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":1572},"outV":{"@type":"gremlin:int32","@value":18},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":229},"outV":{"@type":"gremlin:int32","@value":70},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4264},"outV":{"@type":"gremlin:int32","@value":10},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id"
 :{"@type":"gremlin:int32","@value":4969},"outV":{"@type":"gremlin:int32","@value":236},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3498},"outV":{"@type":"gremlin:int32","@value":58},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5226},"outV":{"@type":"gremlin:int32","@value":216},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5548},"outV":{"@type":"gremlin:int32","@value":166},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2990},"outV":{"@type":"gremlin:int32","@value":14},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3950},"outV":{"@type":"gremlin:int32","@value":138},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2488},"outV":{"@type":"gremlin:int32","@
 value":68},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6776},"outV":{"@type":"gremlin:int32","@value":39},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3641},"outV":{"@type":"gremlin:int32","@value":24},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":1532},"outV":{"@type":"gremlin:int32","@value":164},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":1853},"outV":{"@type":"gremlin:int32","@value":94},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":638},"outV":{"@type":"gremlin:int32","@value":23},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6335},"outV":{"@type":"gremlin:int32","@value":21},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}]},"out
 E":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":6},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":7},"inV":{"@type":"gremlin:int32","@value":11},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":8},"inV":{"@type":"gremlin:int32","@value":12},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":9},"inV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":10},"inV":{"@type":"gremlin:int32","@value":14},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":11},"inV":{"@type":"gremlin:int32","@value":15},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":12},"inV":{"@type":"gremlin:int32","@value"
 :16},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":13},"inV":{"@type":"gremlin:int32","@value":17},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":14},"inV":{"@type":"gremlin:int32","@value":18},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":15},"inV":{"@type":"gremlin:int32","@value":19},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":16},"inV":{"@type":"gremlin:int32","@value":20},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":17},"inV":{"@type":"gremlin:int32","@value":21},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":18},"inV":{"@type":"gremlin:int32","@value":22},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32"
 ,"@value":19},"inV":{"@type":"gremlin:int32","@value":23},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":20},"inV":{"@type":"gremlin:int32","@value":24},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":21},"inV":{"@type":"gremlin:int32","@value":25},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":22},"inV":{"@type":"gremlin:int32","@value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":23},"inV":{"@type":"gremlin:int32","@value":27},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":24},"inV":{"@type":"gremlin:int32","@value":28},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":25},"inV":{"@type":"gremlin:int32","@value":29},"properties":{"weight":{"@type":"gremli
 n:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":26},"inV":{"@type":"gremlin:int32","@value":30},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":27},"inV":{"@type":"gremlin:int32","@value":31},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":28},"inV":{"@type":"gremlin:int32","@value":32},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":29},"inV":{"@type":"gremlin:int32","@value":33},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":30},"inV":{"@type":"gremlin:int32","@value":34},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":31},"inV":{"@type":"gremlin:int32","@value":35},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":32},"inV":{"@type":"gremlin:int32"
 ,"@value":36},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":33},"inV":{"@type":"gremlin:int32","@value":37},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":34},"inV":{"@type":"gremlin:int32","@value":38},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":35},"inV":{"@type":"gremlin:int32","@value":39},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":36},"inV":{"@type":"gremlin:int32","@value":40},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":37},"inV":{"@type":"gremlin:int32","@value":41},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":38},"inV":{"@type":"gremlin:int32","@value":42},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"greml
 in:int32","@value":39},"inV":{"@type":"gremlin:int32","@value":43},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}],"sungBy":[{"id":{"@type":"gremlin:int32","@value":7190},"inV":{"@type":"gremlin:int32","@value":340}}],"writtenBy":[{"id":{"@type":"gremlin:int32","@value":7189},"inV":{"@type":"gremlin:int32","@value":339}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":24},"value":"HERE COMES SUNSHINE"}],"songType":[{"id":{"@type":"gremlin:int64","@value":26},"value":"original"}],"performances":[{"id":{"@type":"gremlin:int64","@value":25},"value":{"@type":"gremlin:int32","@value":65}}]}}
+{"id":{"@type":"gremlin:int32","@value":10},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":3841},"outV":{"@type":"gremlin:int32","@value":60},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1027},"outV":{"@type":"gremlin:int32","@value":73},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":6},"outV":{"@type":"gremlin:int32","@value":9},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3335},"outV":{"@type":"gremlin:int32","@value":155},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4103},"outV":{"@type":"gremlin:int32","@value":48},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":6279},"outV":{"@type":"gremlin:int32","@value":49},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"
 id":{"@type":"gremlin:int32","@value":4233},"outV":{"@type":"gremlin:int32","@value":52},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4878},"outV":{"@type":"gremlin:int32","@value":100},"properties":{"weight":{"@type":"gremlin:int32","@value":19}}},{"id":{"@type":"gremlin:int32","@value":5264},"outV":{"@type":"gremlin:int32","@value":32},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":2196},"outV":{"@type":"gremlin:int32","@value":75},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":151},"outV":{"@type":"gremlin:int32","@value":108},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":1571},"outV":{"@type":"gremlin:int32","@value":18},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":3619},"outV":{"@type":"gremlin:int32","
 @value":24},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3237},"outV":{"@type":"gremlin:int32","@value":63},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":4647},"outV":{"@type":"gremlin:int32","@value":154},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4521},"outV":{"@type":"gremlin:int32","@value":105},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":1195},"outV":{"@type":"gremlin:int32","@value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6444},"outV":{"@type":"gremlin:int32","@value":187},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":6956},"outV":{"@type":"gremlin:int32","@value":84},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"
 id":{"@type":"gremlin:int32","@value":687},"outV":{"@type":"gremlin:int32","@value":157},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4784},"outV":{"@type":"gremlin:int32","@value":114},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6064},"outV":{"@type":"gremlin:int32","@value":115},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1714},"outV":{"@type":"gremlin:int32","@value":82},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3890},"outV":{"@type":"gremlin:int32","@value":51},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":55},"outV":{"@type":"gremlin:int32","@value":46},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5175},"outV":{"@type":"gremlin:int32","@v
 alue":71},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1337},"outV":{"@type":"gremlin:int32","@value":31},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1083},"outV":{"@type":"gremlin:int32","@value":59},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":4155},"outV":{"@type":"gremlin:int32","@value":54},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":6077},"outV":{"@type":"gremlin:int32","@value":72},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":5441},"outV":{"@type":"gremlin:int32","@value":239},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1987},"outV":{"@type":"gremlin:int32","@value":152},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id
 ":{"@type":"gremlin:int32","@value":1860},"outV":{"@type":"gremlin:int32","@value":94},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2116},"outV":{"@type":"gremlin:int32","@value":17},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":3269},"outV":{"@type":"gremlin:int32","@value":160},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":454},"outV":{"@type":"gremlin:int32","@value":38},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3142},"outV":{"@type":"gremlin:int32","@value":104},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":2505},"outV":{"@type":"gremlin:int32","@value":57},"properties":{"weight":{"@type":"gremlin:int32","@value":12}}},{"id":{"@type":"gremlin:int32","@value":6603},"outV":{"@type":"gremlin:int32","@v
 alue":127},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":6859},"outV":{"@type":"gremlin:int32","@value":64},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":717},"outV":{"@type":"gremlin:int32","@value":80},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":1360},"outV":{"@type":"gremlin:int32","@value":130},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3026},"outV":{"@type":"gremlin:int32","@value":14},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5972},"outV":{"@type":"gremlin:int32","@value":50},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5077},"outV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{
 "@type":"gremlin:int32","@value":2392},"outV":{"@type":"gremlin:int32","@value":87},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1250},"outV":{"@type":"gremlin:int32","@value":27},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":4706},"outV":{"@type":"gremlin:int32","@value":111},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":6755},"outV":{"@type":"gremlin:int32","@value":53},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":485},"outV":{"@type":"gremlin:int32","@value":98},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":2917},"outV":{"@type":"gremlin:int32","@value":78},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":3559},"outV":{"@type":"gremlin:int32","@valu
 e":56},"properties":{"weight":{"@type":"gremlin:int32","@value":16}}},{"id":{"@type":"gremlin:int32","@value":3436},"outV":{"@type":"gremlin:int32","@value":58},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":3820},"outV":{"@type":"gremlin:int32","@value":88},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4463},"outV":{"@type":"gremlin:int32","@value":202},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":880},"outV":{"@type":"gremlin:int32","@value":189},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6256},"outV":{"@type":"gremlin:int32","@value":117},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3698},"outV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{
 "@type":"gremlin:int32","@value":2035},"outV":{"@type":"gremlin:int32","@value":180},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2291},"outV":{"@type":"gremlin:int32","@value":25},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3317},"outV":{"@type":"gremlin:int32","@value":252},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2806},"outV":{"@type":"gremlin:int32","@value":15},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":2427},"outV":{"@type":"gremlin:int32","@value":68},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6782},"outV":{"@type":"gremlin:int32","@value":39},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":4351},"outV":{"@type":"gremlin:int32","@valu
 e":62},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":4235},"inV":{"@type":"gremlin:int32","@value":56},"properties":{"weight":{"@type":"gremlin:int32","@value":13}}},{"id":{"@type":"gremlin:int32","@value":4236},"inV":{"@type":"gremlin:int32","@value":27},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":4237},"inV":{"@type":"gremlin:int32","@value":58},"properties":{"weight":{"@type":"gremlin:int32","@value":11}}},{"id":{"@type":"gremlin:int32","@value":4238},"inV":{"@type":"gremlin:int32","@value":80},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":4239},"inV":{"@type":"gremlin:int32","@value":59},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":4240},"inV":{"@type":"gremlin:int32","@value":100},"properties":{"weight":{"@type":"gremlin:int32","@v
 alue":21}}},{"id":{"@type":"gremlin:int32","@value":4241},"inV":{"@type":"gremlin:int32","@value":104},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":4242},"inV":{"@type":"gremlin:int32","@value":50},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":4243},"inV":{"@type":"gremlin:int32","@value":48},"properties":{"weight":{"@type":"gremlin:int32","@value":8}}},{"id":{"@type":"gremlin:int32","@value":4244},"inV":{"@type":"gremlin:int32","@value":54},"properties":{"weight":{"@type":"gremlin:int32","@value":13}}},{"id":{"@type":"gremlin:int32","@value":4245},"inV":{"@type":"gremlin:int32","@value":19},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":4246},"inV":{"@type":"gremlin:int32","@value":72},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":4247},"inV":{"@type":"gremlin:i
 nt32","@value":14},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4248},"inV":{"@type":"gremlin:int32","@value":122},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":4249},"inV":{"@type":"gremlin:int32","@value":235},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4250},"inV":{"@type":"gremlin:int32","@value":218},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4251},"inV":{"@type":"gremlin:int32","@value":252},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4252},"inV":{"@type":"gremlin:int32","@value":89},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":4253},"inV":{"@type":"gremlin:int32","@value":57},"properties":{"weight":{"@type":"gremlin:int32","@value":12}}}
 ,{"id":{"@type":"gremlin:int32","@value":4254},"inV":{"@type":"gremlin:int32","@value":49},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":4255},"inV":{"@type":"gremlin:int32","@value":94},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":4256},"inV":{"@type":"gremlin:int32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4257},"inV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4258},"inV":{"@type":"gremlin:int32","@value":160},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4259},"inV":{"@type":"gremlin:int32","@value":51},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":4260},"inV":{"@type":"gremlin:int32","@va
 lue":18},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":4261},"inV":{"@type":"gremlin:int32","@value":202},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":4262},"inV":{"@type":"gremlin:int32","@value":17},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":4263},"inV":{"@type":"gremlin:int32","@value":46},"pr

<TRUNCATED>

[13/19] tinkerpop git commit: TINKERPOP-1274: GraphSON 2.0.

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/data/grateful-dead-v2d0.json
----------------------------------------------------------------------
diff --git a/data/grateful-dead-v2d0.json b/data/grateful-dead-v2d0.json
new file mode 100644
index 0000000..92c4d84
--- /dev/null
+++ b/data/grateful-dead-v2d0.json
@@ -0,0 +1,808 @@
+{"id":1,"label":"song","inE":{"followedBy":[{"id":3059,"outV":153,"properties":{"weight":1}},{"id":276,"outV":5,"properties":{"weight":2}},{"id":3704,"outV":3,"properties":{"weight":2}},{"id":4383,"outV":62,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":0,"inV":2,"properties":{"weight":1}},{"id":1,"inV":3,"properties":{"weight":2}},{"id":2,"inV":4,"properties":{"weight":1}},{"id":3,"inV":5,"properties":{"weight":1}},{"id":4,"inV":6,"properties":{"weight":1}}],"sungBy":[{"id":7612,"inV":340}],"writtenBy":[{"id":7611,"inV":527}]},"properties":{"name":[{"id":0,"value":"HEY BO DIDDLEY"}],"songType":[{"id":2,"value":"cover"}],"performances":[{"id":1,"value":5}]}}
+{"id":2,"label":"song","inE":{"followedBy":[{"id":0,"outV":1,"properties":{"weight":1}},{"id":323,"outV":34,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":6190,"inV":123,"properties":{"weight":1}},{"id":6191,"inV":50,"properties":{"weight":1}}],"sungBy":[{"id":7666,"inV":525}],"writtenBy":[{"id":7665,"inV":525}]},"properties":{"name":[{"id":3,"value":"IM A MAN"}],"songType":[{"id":5,"value":"cover"}],"performances":[{"id":4,"value":1}]}}
+{"id":3,"label":"song","inE":{"followedBy":[{"id":1,"outV":1,"properties":{"weight":2}},{"id":2051,"outV":92,"properties":{"weight":4}},{"id":1412,"outV":83,"properties":{"weight":6}},{"id":6669,"outV":12,"properties":{"weight":1}},{"id":526,"outV":120,"properties":{"weight":2}},{"id":910,"outV":91,"properties":{"weight":3}},{"id":1166,"outV":26,"properties":{"weight":4}},{"id":6286,"outV":49,"properties":{"weight":1}},{"id":273,"outV":5,"properties":{"weight":40}},{"id":2194,"outV":235,"properties":{"weight":1}},{"id":1684,"outV":124,"properties":{"weight":1}},{"id":1941,"outV":148,"properties":{"weight":4}},{"id":3221,"outV":63,"properties":{"weight":1}},{"id":2712,"outV":13,"properties":{"weight":3}},{"id":6425,"outV":134,"properties":{"weight":2}},{"id":5787,"outV":76,"properties":{"weight":2}},{"id":5148,"outV":125,"properties":{"weight":4}},{"id":6692,"outV":141,"properties":{"weight":2}},{"id":6310,"outV":123,"properties":{"weight":1}},{"id":6448,"outV":187,"properties":{"wei
 ght":3}},{"id":2225,"outV":226,"properties":{"weight":1}},{"id":5042,"outV":209,"properties":{"weight":1}},{"id":4789,"outV":114,"properties":{"weight":2}},{"id":1464,"outV":81,"properties":{"weight":1}},{"id":2232,"outV":215,"properties":{"weight":1}},{"id":4665,"outV":154,"properties":{"weight":1}},{"id":2235,"outV":29,"properties":{"weight":163}},{"id":6208,"outV":319,"properties":{"weight":4}},{"id":706,"outV":206,"properties":{"weight":2}},{"id":835,"outV":171,"properties":{"weight":1}},{"id":5188,"outV":99,"properties":{"weight":1}},{"id":1862,"outV":94,"properties":{"weight":10}},{"id":1735,"outV":82,"properties":{"weight":1}},{"id":6343,"outV":21,"properties":{"weight":1}},{"id":4937,"outV":277,"properties":{"weight":1}},{"id":3276,"outV":160,"properties":{"weight":1}},{"id":3149,"outV":104,"properties":{"weight":1}},{"id":1358,"outV":130,"properties":{"weight":18}},{"id":4304,"outV":110,"properties":{"weight":1}},{"id":1105,"outV":59,"properties":{"weight":1}},{"id":722,"ou
 tV":80,"properties":{"weight":1}},{"id":4182,"outV":54,"properties":{"weight":1}},{"id":1499,"outV":164,"properties":{"weight":2}},{"id":2397,"outV":179,"properties":{"weight":1}},{"id":351,"outV":178,"properties":{"weight":1}},{"id":6623,"outV":127,"properties":{"weight":3}},{"id":2018,"outV":149,"properties":{"weight":1}},{"id":7011,"outV":89,"properties":{"weight":2}},{"id":5348,"outV":165,"properties":{"weight":1}},{"id":2278,"outV":25,"properties":{"weight":7}},{"id":1255,"outV":27,"properties":{"weight":2}},{"id":3048,"outV":153,"properties":{"weight":13}},{"id":5867,"outV":96,"properties":{"weight":116}},{"id":364,"outV":74,"properties":{"weight":2}},{"id":492,"outV":98,"properties":{"weight":1}},{"id":3948,"outV":138,"properties":{"weight":4}},{"id":4335,"outV":62,"properties":{"weight":1}},{"id":3312,"outV":252,"properties":{"weight":1}},{"id":5745,"outV":129,"properties":{"weight":1}},{"id":4596,"outV":85,"properties":{"weight":3}},{"id":5367,"outV":132,"properties":{"weig
 ht":1}},{"id":633,"outV":23,"properties":{"weight":1}},{"id":891,"outV":140,"properties":{"weight":2}},{"id":5375,"outV":69,"properties":{"weight":1}},{"id":6143,"outV":289,"properties":{"weight":3}}]},"outE":{"followedBy":[{"id":3712,"inV":27,"properties":{"weight":1}},{"id":3713,"inV":110,"properties":{"weight":4}},{"id":3714,"inV":215,"properties":{"weight":4}},{"id":3715,"inV":127,"properties":{"weight":10}},{"id":3716,"inV":83,"properties":{"weight":3}},{"id":3717,"inV":103,"properties":{"weight":2}},{"id":3718,"inV":68,"properties":{"weight":1}},{"id":3719,"inV":134,"properties":{"weight":2}},{"id":3720,"inV":25,"properties":{"weight":10}},{"id":3721,"inV":125,"properties":{"weight":54}},{"id":3722,"inV":130,"properties":{"weight":26}},{"id":3723,"inV":141,"properties":{"weight":2}},{"id":3724,"inV":145,"properties":{"weight":1}},{"id":3725,"inV":319,"properties":{"weight":3}},{"id":3726,"inV":12,"properties":{"weight":1}},{"id":3727,"inV":160,"properties":{"weight":37}},{"id"
 :3728,"inV":70,"properties":{"weight":2}},{"id":3729,"inV":123,"properties":{"weight":1}},{"id":3730,"inV":129,"properties":{"weight":1}},{"id":3731,"inV":30,"properties":{"weight":2}},{"id":3732,"inV":148,"properties":{"weight":1}},{"id":3733,"inV":211,"properties":{"weight":3}},{"id":3734,"inV":87,"properties":{"weight":13}},{"id":3735,"inV":164,"properties":{"weight":4}},{"id":3736,"inV":64,"properties":{"weight":2}},{"id":3737,"inV":320,"properties":{"weight":1}},{"id":3738,"inV":61,"properties":{"weight":3}},{"id":3739,"inV":210,"properties":{"weight":3}},{"id":3740,"inV":50,"properties":{"weight":7}},{"id":3741,"inV":128,"properties":{"weight":3}},{"id":3742,"inV":315,"properties":{"weight":1}},{"id":3743,"inV":261,"properties":{"weight":1}},{"id":3744,"inV":213,"properties":{"weight":13}},{"id":3745,"inV":72,"properties":{"weight":1}},{"id":3746,"inV":38,"properties":{"weight":4}},{"id":3747,"inV":204,"properties":{"weight":14}},{"id":3748,"inV":62,"properties":{"weight":2}},
 {"id":3749,"inV":150,"properties":{"weight":8}},{"id":3750,"inV":309,"properties":{"weight":1}},{"id":3751,"inV":131,"properties":{"weight":1}},{"id":3752,"inV":151,"properties":{"weight":1}},{"id":3753,"inV":321,"properties":{"weight":1}},{"id":3754,"inV":90,"properties":{"weight":2}},{"id":3755,"inV":82,"properties":{"weight":1}},{"id":3756,"inV":120,"properties":{"weight":1}},{"id":3757,"inV":46,"properties":{"weight":5}},{"id":3758,"inV":157,"properties":{"weight":5}},{"id":3759,"inV":59,"properties":{"weight":1}},{"id":3760,"inV":81,"properties":{"weight":1}},{"id":3761,"inV":86,"properties":{"weight":5}},{"id":3762,"inV":140,"properties":{"weight":1}},{"id":3763,"inV":201,"properties":{"weight":1}},{"id":3764,"inV":214,"properties":{"weight":1}},{"id":3765,"inV":185,"properties":{"weight":2}},{"id":3766,"inV":216,"properties":{"weight":1}},{"id":3767,"inV":217,"properties":{"weight":2}},{"id":3768,"inV":236,"properties":{"weight":5}},{"id":3769,"inV":193,"properties":{"weight"
 :1}},{"id":3770,"inV":79,"properties":{"weight":2}},{"id":3771,"inV":84,"properties":{"weight":1}},{"id":3772,"inV":23,"properties":{"weight":2}},{"id":3773,"inV":31,"properties":{"weight":2}},{"id":3774,"inV":240,"properties":{"weight":1}},{"id":3775,"inV":292,"properties":{"weight":1}},{"id":3776,"inV":9,"properties":{"weight":1}},{"id":3777,"inV":259,"properties":{"weight":1}},{"id":3694,"inV":5,"properties":{"weight":57}},{"id":3695,"inV":114,"properties":{"weight":30}},{"id":3696,"inV":74,"properties":{"weight":2}},{"id":3697,"inV":78,"properties":{"weight":3}},{"id":3698,"inV":10,"properties":{"weight":1}},{"id":3699,"inV":26,"properties":{"weight":4}},{"id":3700,"inV":153,"properties":{"weight":7}},{"id":3701,"inV":4,"properties":{"weight":4}},{"id":3702,"inV":317,"properties":{"weight":1}},{"id":3703,"inV":13,"properties":{"weight":5}},{"id":3704,"inV":1,"properties":{"weight":2}},{"id":3705,"inV":21,"properties":{"weight":2}},{"id":3706,"inV":57,"properties":{"weight":2}},{
 "id":3707,"inV":122,"properties":{"weight":2}},{"id":3708,"inV":318,"properties":{"weight":1}},{"id":3709,"inV":94,"properties":{"weight":26}},{"id":3710,"inV":96,"properties":{"weight":7}},{"id":3711,"inV":124,"properties":{"weight":15}}],"sungBy":[{"id":7808,"inV":351}],"writtenBy":[{"id":7807,"inV":671}]},"properties":{"name":[{"id":6,"value":"NOT FADE AWAY"}],"songType":[{"id":8,"value":"cover"}],"performances":[{"id":7,"value":531}]}}
+{"id":4,"label":"song","inE":{"followedBy":[{"id":128,"outV":97,"properties":{"weight":1}},{"id":1664,"outV":267,"properties":{"weight":1}},{"id":2,"outV":1,"properties":{"weight":1}},{"id":899,"outV":140,"properties":{"weight":1}},{"id":1667,"outV":124,"properties":{"weight":15}},{"id":4099,"outV":48,"properties":{"weight":1}},{"id":1156,"outV":26,"properties":{"weight":16}},{"id":773,"outV":122,"properties":{"weight":9}},{"id":6534,"outV":242,"properties":{"weight":1}},{"id":1032,"outV":73,"properties":{"weight":1}},{"id":6664,"outV":12,"properties":{"weight":3}},{"id":5129,"outV":222,"properties":{"weight":1}},{"id":5387,"outV":69,"properties":{"weight":1}},{"id":5517,"outV":43,"properties":{"weight":2}},{"id":5006,"outV":30,"properties":{"weight":2}},{"id":6030,"outV":204,"properties":{"weight":2}},{"id":2063,"outV":92,"properties":{"weight":1}},{"id":915,"outV":91,"properties":{"weight":2}},{"id":6940,"outV":84,"properties":{"weight":5}},{"id":2464,"outV":68,"properties":{"weig
 ht":1}},{"id":5795,"outV":76,"properties":{"weight":2}},{"id":3620,"outV":24,"properties":{"weight":2}},{"id":4772,"outV":114,"properties":{"weight":25}},{"id":2982,"outV":14,"properties":{"weight":3}},{"id":3367,"outV":184,"properties":{"weight":6}},{"id":2345,"outV":87,"properties":{"weight":2}},{"id":2861,"outV":101,"properties":{"weight":6}},{"id":1840,"outV":275,"properties":{"weight":1}},{"id":5425,"outV":102,"properties":{"weight":1}},{"id":180,"outV":70,"properties":{"weight":46}},{"id":2613,"outV":158,"properties":{"weight":1}},{"id":5434,"outV":217,"properties":{"weight":1}},{"id":5562,"outV":162,"properties":{"weight":2}},{"id":1469,"outV":81,"properties":{"weight":1}},{"id":446,"outV":38,"properties":{"weight":7}},{"id":2494,"outV":90,"properties":{"weight":3}},{"id":3266,"outV":160,"properties":{"weight":10}},{"id":326,"outV":34,"properties":{"weight":1}},{"id":583,"outV":120,"properties":{"weight":2}},{"id":6855,"outV":64,"properties":{"weight":12}},{"id":73,"outV":46,
 "properties":{"weight":4}},{"id":4425,"outV":212,"properties":{"weight":1}},{"id":1613,"outV":210,"properties":{"weight":2}},{"id":4941,"outV":86,"properties":{"weight":2}},{"id":6350,"outV":21,"properties":{"weight":1}},{"id":3535,"outV":201,"properties":{"weight":1}},{"id":980,"outV":11,"properties":{"weight":3}},{"id":1494,"outV":164,"properties":{"weight":3}},{"id":5206,"outV":99,"properties":{"weight":1}},{"id":5847,"outV":61,"properties":{"weight":2}},{"id":6490,"outV":187,"properties":{"weight":1}},{"id":2781,"outV":15,"properties":{"weight":4}},{"id":5600,"outV":42,"properties":{"weight":1}},{"id":353,"outV":74,"properties":{"weight":6}},{"id":5474,"outV":79,"properties":{"weight":1}},{"id":1891,"outV":103,"properties":{"weight":19}},{"id":3811,"outV":88,"properties":{"weight":2}},{"id":5989,"outV":50,"properties":{"weight":12}},{"id":4327,"outV":110,"properties":{"weight":2}},{"id":2538,"outV":57,"properties":{"weight":4}},{"id":3050,"outV":153,"properties":{"weight":13}},{
 "id":4970,"outV":236,"properties":{"weight":1}},{"id":2283,"outV":25,"properties":{"weight":9}},{"id":236,"outV":145,"properties":{"weight":1}},{"id":6126,"outV":72,"properties":{"weight":2}},{"id":5232,"outV":214,"properties":{"weight":2}},{"id":4594,"outV":85,"properties":{"weight":1}},{"id":1652,"outV":213,"properties":{"weight":3}},{"id":4084,"outV":109,"properties":{"weight":1}},{"id":629,"outV":23,"properties":{"weight":10}},{"id":3701,"outV":3,"properties":{"weight":4}},{"id":5621,"outV":22,"properties":{"weight":1}},{"id":7029,"outV":89,"properties":{"weight":1}},{"id":5238,"outV":32,"properties":{"weight":3}},{"id":2684,"outV":13,"properties":{"weight":9}},{"id":3325,"outV":268,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":5120,"inV":40,"properties":{"weight":5}},{"id":5121,"inV":33,"properties":{"weight":3}},{"id":5122,"inV":79,"properties":{"weight":1}},{"id":5123,"inV":292,"properties":{"weight":1}},{"id":5071,"inV":50,"properties":{"weight":9}},{"id":5072,"in
 V":12,"properties":{"weight":26}},{"id":5073,"inV":18,"properties":{"weight":4}},{"id":5074,"inV":24,"properties":{"weight":9}},{"id":5075,"inV":23,"properties":{"weight":63}},{"id":5076,"inV":13,"properties":{"weight":12}},{"id":5077,"inV":10,"properties":{"weight":4}},{"id":5078,"inV":11,"properties":{"weight":3}},{"id":5079,"inV":26,"properties":{"weight":18}},{"id":5080,"inV":22,"properties":{"weight":1}},{"id":5081,"inV":16,"properties":{"weight":2}},{"id":5082,"inV":49,"properties":{"weight":1}},{"id":5083,"inV":25,"properties":{"weight":2}},{"id":5084,"inV":51,"properties":{"weight":1}},{"id":5085,"inV":15,"properties":{"weight":1}},{"id":5086,"inV":112,"properties":{"weight":4}},{"id":5087,"inV":121,"properties":{"weight":1}},{"id":5088,"inV":32,"properties":{"weight":7}},{"id":5089,"inV":68,"properties":{"weight":2}},{"id":5090,"inV":120,"properties":{"weight":77}},{"id":5091,"inV":103,"properties":{"weight":1}},{"id":5092,"inV":42,"properties":{"weight":3}},{"id":5093,"inV
 ":85,"properties":{"weight":4}},{"id":5094,"inV":76,"properties":{"weight":5}},{"id":5095,"inV":181,"properties":{"weight":2}},{"id":5096,"inV":14,"properties":{"weight":2}},{"id":5097,"inV":122,"properties":{"weight":1}},{"id":5098,"inV":153,"properties":{"weight":3}},{"id":5099,"inV":96,"properties":{"weight":1}},{"id":5100,"inV":82,"properties":{"weight":3}},{"id":5101,"inV":110,"properties":{"weight":1}},{"id":5102,"inV":19,"properties":{"weight":6}},{"id":5103,"inV":129,"properties":{"weight":1}},{"id":5104,"inV":84,"properties":{"weight":1}},{"id":5105,"inV":88,"properties":{"weight":9}},{"id":5106,"inV":97,"properties":{"weight":1}},{"id":5107,"inV":114,"properties":{"weight":2}},{"id":5108,"inV":30,"properties":{"weight":8}},{"id":5109,"inV":31,"properties":{"weight":8}},{"id":5110,"inV":69,"properties":{"weight":4}},{"id":5111,"inV":127,"properties":{"weight":2}},{"id":5112,"inV":60,"properties":{"weight":1}},{"id":5113,"inV":39,"properties":{"weight":2}},{"id":5114,"inV":2
 1,"properties":{"weight":1}},{"id":5115,"inV":117,"properties":{"weight":1}},{"id":5116,"inV":78,"properties":{"weight":1}},{"id":5117,"inV":38,"properties":{"weight":1}},{"id":5118,"inV":169,"properties":{"weight":2}},{"id":5119,"inV":118,"properties":{"weight":1}}],"sungBy":[{"id":7064,"inV":340}],"writtenBy":[{"id":7063,"inV":339}]},"properties":{"name":[{"id":9,"value":"BERTHA"}],"songType":[{"id":11,"value":"original"}],"performances":[{"id":10,"value":394}]}}
+{"id":5,"label":"song","inE":{"followedBy":[{"id":194,"outV":70,"properties":{"weight":8}},{"id":962,"outV":67,"properties":{"weight":5}},{"id":3,"outV":1,"properties":{"weight":1}},{"id":5446,"outV":231,"properties":{"weight":5}},{"id":6344,"outV":21,"properties":{"weight":6}},{"id":1738,"outV":82,"properties":{"weight":1}},{"id":6666,"outV":12,"properties":{"weight":1}},{"id":1867,"outV":94,"properties":{"weight":15}},{"id":4300,"outV":110,"properties":{"weight":1}},{"id":847,"outV":171,"properties":{"weight":1}},{"id":2832,"outV":101,"properties":{"weight":3}},{"id":6032,"outV":115,"properties":{"weight":1}},{"id":1170,"outV":26,"properties":{"weight":1}},{"id":5330,"outV":238,"properties":{"weight":1}},{"id":1491,"outV":164,"properties":{"weight":3}},{"id":1429,"outV":83,"properties":{"weight":3}},{"id":3033,"outV":14,"properties":{"weight":1}},{"id":6298,"outV":49,"properties":{"weight":1}},{"id":1373,"outV":130,"properties":{"weight":11}},{"id":4447,"outV":113,"properties":{"w
 eight":1}},{"id":5151,"outV":125,"properties":{"weight":6}},{"id":5343,"outV":165,"properties":{"weight":2}},{"id":6431,"outV":134,"properties":{"weight":2}},{"id":1953,"outV":148,"properties":{"weight":10}},{"id":1634,"outV":210,"properties":{"weight":1}},{"id":2274,"outV":25,"properties":{"weight":8}},{"id":100,"outV":46,"properties":{"weight":1}},{"id":933,"outV":91,"properties":{"weight":1}},{"id":2021,"outV":149,"properties":{"weight":1}},{"id":6694,"outV":141,"properties":{"weight":2}},{"id":4009,"outV":225,"properties":{"weight":1}},{"id":682,"outV":219,"properties":{"weight":1}},{"id":3694,"outV":3,"properties":{"weight":57}},{"id":4718,"outV":186,"properties":{"weight":6}},{"id":3055,"outV":153,"properties":{"weight":9}},{"id":2480,"outV":68,"properties":{"weight":1}},{"id":2736,"outV":13,"properties":{"weight":3}},{"id":5426,"outV":102,"properties":{"weight":1}},{"id":6899,"outV":147,"properties":{"weight":1}},{"id":5879,"outV":96,"properties":{"weight":22}},{"id":6201,"ou
 tV":319,"properties":{"weight":2}},{"id":5370,"outV":132,"properties":{"weight":2}},{"id":700,"outV":206,"properties":{"weight":1}},{"id":2236,"outV":29,"properties":{"weight":5}},{"id":4604,"outV":85,"properties":{"weight":2}},{"id":5759,"outV":129,"properties":{"weight":6}}]},"outE":{"followedBy":[{"id":273,"inV":3,"properties":{"weight":40}},{"id":274,"inV":26,"properties":{"weight":3}},{"id":275,"inV":114,"properties":{"weight":40}},{"id":276,"inV":1,"properties":{"weight":2}},{"id":277,"inV":74,"properties":{"weight":3}},{"id":278,"inV":122,"properties":{"weight":3}},{"id":279,"inV":133,"properties":{"weight":2}},{"id":280,"inV":83,"properties":{"weight":1}},{"id":281,"inV":153,"properties":{"weight":5}},{"id":282,"inV":159,"properties":{"weight":1}},{"id":283,"inV":13,"properties":{"weight":3}},{"id":284,"inV":25,"properties":{"weight":19}},{"id":285,"inV":96,"properties":{"weight":10}},{"id":286,"inV":160,"properties":{"weight":2}},{"id":287,"inV":32,"properties":{"weight":1}
 },{"id":288,"inV":120,"properties":{"weight":16}},{"id":289,"inV":50,"properties":{"weight":1}},{"id":290,"inV":116,"properties":{"weight":1}},{"id":291,"inV":127,"properties":{"weight":6}},{"id":292,"inV":65,"properties":{"weight":1}},{"id":293,"inV":130,"properties":{"weight":3}},{"id":294,"inV":125,"properties":{"weight":5}},{"id":295,"inV":70,"properties":{"weight":13}},{"id":296,"inV":134,"properties":{"weight":1}},{"id":297,"inV":161,"properties":{"weight":1}},{"id":298,"inV":162,"properties":{"weight":1}},{"id":299,"inV":124,"properties":{"weight":3}},{"id":300,"inV":38,"properties":{"weight":1}},{"id":301,"inV":29,"properties":{"weight":11}},{"id":302,"inV":163,"properties":{"weight":1}},{"id":303,"inV":94,"properties":{"weight":5}},{"id":304,"inV":85,"properties":{"weight":1}},{"id":305,"inV":164,"properties":{"weight":6}},{"id":306,"inV":64,"properties":{"weight":1}},{"id":307,"inV":150,"properties":{"weight":1}},{"id":308,"inV":165,"properties":{"weight":7}},{"id":309,"in
 V":92,"properties":{"weight":1}},{"id":310,"inV":140,"properties":{"weight":1}},{"id":311,"inV":166,"properties":{"weight":1}}],"sungBy":[{"id":7582,"inV":340}],"writtenBy":[{"id":7581,"inV":446}]},"properties":{"name":[{"id":12,"value":"GOING DOWN THE ROAD FEELING BAD"}],"songType":[{"id":14,"value":"cover"}],"performances":[{"id":13,"value":293}]}}
+{"id":6,"label":"song","inE":{"followedBy":[{"id":4,"outV":1,"properties":{"weight":1}},{"id":2023,"outV":282,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":2406,"inV":293,"properties":{"weight":1}},{"id":2407,"inV":96,"properties":{"weight":1}}],"sungBy":[{"id":7782,"inV":351}],"writtenBy":[{"id":7781,"inV":527}]},"properties":{"name":[{"id":15,"value":"MONA"}],"songType":[{"id":17,"value":"cover"}],"performances":[{"id":16,"value":1}]}}
+{"id":7,"label":"song","inE":{"followedBy":[{"id":2607,"outV":295,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":5,"inV":8,"properties":{"weight":1}}]},"properties":{"name":[{"id":18,"value":"WHERE HAVE THE HEROES GONE"}],"songType":[{"id":20,"value":""}],"performances":[{"id":19,"value":0}]}}
+{"id":8,"label":"song","inE":{"followedBy":[{"id":4705,"outV":111,"properties":{"weight":1}},{"id":5,"outV":7,"properties":{"weight":1}},{"id":5901,"outV":96,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":2976,"inV":302,"properties":{"weight":1}},{"id":2977,"inV":96,"properties":{"weight":1}},{"id":2978,"inV":72,"properties":{"weight":1}}],"sungBy":[{"id":7814,"inV":351}],"writtenBy":[{"id":7813,"inV":674}]},"properties":{"name":[{"id":21,"value":"OH BOY"}],"songType":[{"id":23,"value":"cover"}],"performances":[{"id":22,"value":2}]}}
+{"id":9,"label":"song","inE":{"followedBy":[{"id":3776,"outV":3,"properties":{"weight":1}},{"id":65,"outV":46,"properties":{"weight":2}},{"id":1923,"outV":103,"properties":{"weight":3}},{"id":5956,"outV":50,"properties":{"weight":2}},{"id":3077,"outV":153,"properties":{"weight":2}},{"id":5832,"outV":76,"properties":{"weight":1}},{"id":1161,"outV":26,"properties":{"weight":8}},{"id":2699,"outV":13,"properties":{"weight":3}},{"id":6539,"outV":55,"properties":{"weight":1}},{"id":6667,"outV":12,"properties":{"weight":2}},{"id":2578,"outV":57,"properties":{"weight":2}},{"id":787,"outV":122,"properties":{"weight":3}},{"id":3542,"outV":201,"properties":{"weight":1}},{"id":2775,"outV":15,"properties":{"weight":5}},{"id":2840,"outV":101,"properties":{"weight":2}},{"id":4953,"outV":86,"properties":{"weight":2}},{"id":1572,"outV":18,"properties":{"weight":3}},{"id":229,"outV":70,"properties":{"weight":1}},{"id":4264,"outV":10,"properties":{"weight":1}},{"id":4969,"outV":236,"properties":{"weig
 ht":3}},{"id":3498,"outV":58,"properties":{"weight":2}},{"id":5226,"outV":216,"properties":{"weight":1}},{"id":5548,"outV":166,"properties":{"weight":1}},{"id":2990,"outV":14,"properties":{"weight":4}},{"id":3950,"outV":138,"properties":{"weight":1}},{"id":2488,"outV":68,"properties":{"weight":1}},{"id":6776,"outV":39,"properties":{"weight":1}},{"id":3641,"outV":24,"properties":{"weight":2}},{"id":1532,"outV":164,"properties":{"weight":2}},{"id":1853,"outV":94,"properties":{"weight":1}},{"id":638,"outV":23,"properties":{"weight":2}},{"id":6335,"outV":21,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":6,"inV":10,"properties":{"weight":3}},{"id":7,"inV":11,"properties":{"weight":2}},{"id":8,"inV":12,"properties":{"weight":3}},{"id":9,"inV":13,"properties":{"weight":6}},{"id":10,"inV":14,"properties":{"weight":3}},{"id":11,"inV":15,"properties":{"weight":3}},{"id":12,"inV":16,"properties":{"weight":1}},{"id":13,"inV":17,"properties":{"weight":1}},{"id":14,"inV":18,"properties"
 :{"weight":5}},{"id":15,"inV":19,"properties":{"weight":1}},{"id":16,"inV":20,"properties":{"weight":1}},{"id":17,"inV":21,"properties":{"weight":1}},{"id":18,"inV":22,"properties":{"weight":2}},{"id":19,"inV":23,"properties":{"weight":2}},{"id":20,"inV":24,"properties":{"weight":1}},{"id":21,"inV":25,"properties":{"weight":1}},{"id":22,"inV":26,"properties":{"weight":1}},{"id":23,"inV":27,"properties":{"weight":1}},{"id":24,"inV":28,"properties":{"weight":2}},{"id":25,"inV":29,"properties":{"weight":1}},{"id":26,"inV":30,"properties":{"weight":5}},{"id":27,"inV":31,"properties":{"weight":2}},{"id":28,"inV":32,"properties":{"weight":1}},{"id":29,"inV":33,"properties":{"weight":2}},{"id":30,"inV":34,"properties":{"weight":2}},{"id":31,"inV":35,"properties":{"weight":3}},{"id":32,"inV":36,"properties":{"weight":2}},{"id":33,"inV":37,"properties":{"weight":3}},{"id":34,"inV":38,"properties":{"weight":1}},{"id":35,"inV":39,"properties":{"weight":1}},{"id":36,"inV":40,"properties":{"weig
 ht":1}},{"id":37,"inV":41,"properties":{"weight":1}},{"id":38,"inV":42,"properties":{"weight":1}},{"id":39,"inV":43,"properties":{"weight":1}}],"sungBy":[{"id":7190,"inV":340}],"writtenBy":[{"id":7189,"inV":339}]},"properties":{"name":[{"id":24,"value":"HERE COMES SUNSHINE"}],"songType":[{"id":26,"value":"original"}],"performances":[{"id":25,"value":65}]}}
+{"id":10,"label":"song","inE":{"followedBy":[{"id":3841,"outV":60,"properties":{"weight":1}},{"id":1027,"outV":73,"properties":{"weight":5}},{"id":6,"outV":9,"properties":{"weight":3}},{"id":3335,"outV":155,"properties":{"weight":1}},{"id":4103,"outV":48,"properties":{"weight":5}},{"id":6279,"outV":49,"properties":{"weight":1}},{"id":4233,"outV":52,"properties":{"weight":1}},{"id":4878,"outV":100,"properties":{"weight":19}},{"id":5264,"outV":32,"properties":{"weight":2}},{"id":2196,"outV":75,"properties":{"weight":4}},{"id":151,"outV":108,"properties":{"weight":3}},{"id":1571,"outV":18,"properties":{"weight":5}},{"id":3619,"outV":24,"properties":{"weight":2}},{"id":3237,"outV":63,"properties":{"weight":3}},{"id":4647,"outV":154,"properties":{"weight":1}},{"id":4521,"outV":105,"properties":{"weight":3}},{"id":1195,"outV":26,"properties":{"weight":1}},{"id":6444,"outV":187,"properties":{"weight":9}},{"id":6956,"outV":84,"properties":{"weight":1}},{"id":687,"outV":157,"properties":{"we
 ight":1}},{"id":4784,"outV":114,"properties":{"weight":1}},{"id":6064,"outV":115,"properties":{"weight":1}},{"id":1714,"outV":82,"properties":{"weight":3}},{"id":3890,"outV":51,"properties":{"weight":9}},{"id":55,"outV":46,"properties":{"weight":1}},{"id":5175,"outV":71,"properties":{"weight":1}},{"id":1337,"outV":31,"properties":{"weight":1}},{"id":1083,"outV":59,"properties":{"weight":10}},{"id":4155,"outV":54,"properties":{"weight":6}},{"id":6077,"outV":72,"properties":{"weight":5}},{"id":5441,"outV":239,"properties":{"weight":1}},{"id":1987,"outV":152,"properties":{"weight":2}},{"id":1860,"outV":94,"properties":{"weight":1}},{"id":2116,"outV":17,"properties":{"weight":7}},{"id":3269,"outV":160,"properties":{"weight":2}},{"id":454,"outV":38,"properties":{"weight":1}},{"id":3142,"outV":104,"properties":{"weight":4}},{"id":2505,"outV":57,"properties":{"weight":12}},{"id":6603,"outV":127,"properties":{"weight":4}},{"id":6859,"outV":64,"properties":{"weight":1}},{"id":717,"outV":80,"
 properties":{"weight":9}},{"id":1360,"outV":130,"properties":{"weight":2}},{"id":3026,"outV":14,"properties":{"weight":1}},{"id":5972,"outV":50,"properties":{"weight":1}},{"id":5077,"outV":4,"properties":{"weight":4}},{"id":2392,"outV":87,"properties":{"weight":1}},{"id":1250,"outV":27,"properties":{"weight":10}},{"id":4706,"outV":111,"properties":{"weight":3}},{"id":6755,"outV":53,"properties":{"weight":1}},{"id":485,"outV":98,"properties":{"weight":4}},{"id":2917,"outV":78,"properties":{"weight":10}},{"id":3559,"outV":56,"properties":{"weight":16}},{"id":3436,"outV":58,"properties":{"weight":10}},{"id":3820,"outV":88,"properties":{"weight":1}},{"id":4463,"outV":202,"properties":{"weight":4}},{"id":880,"outV":189,"properties":{"weight":1}},{"id":6256,"outV":117,"properties":{"weight":1}},{"id":3698,"outV":3,"properties":{"weight":1}},{"id":2035,"outV":180,"properties":{"weight":1}},{"id":2291,"outV":25,"properties":{"weight":1}},{"id":3317,"outV":252,"properties":{"weight":1}},{"id
 ":2806,"outV":15,"properties":{"weight":2}},{"id":2427,"outV":68,"properties":{"weight":2}},{"id":6782,"outV":39,"properties":{"weight":4}},{"id":4351,"outV":62,"properties":{"weight":2}}]},"outE":{"followedBy":[{"id":4235,"inV":56,"properties":{"weight":13}},{"id":4236,"inV":27,"properties":{"weight":7}},{"id":4237,"inV":58,"properties":{"weight":11}},{"id":4238,"inV":80,"properties":{"weight":6}},{"id":4239,"inV":59,"properties":{"weight":9}},{"id":4240,"inV":100,"properties":{"weight":21}},{"id":4241,"inV":104,"properties":{"weight":5}},{"id":4242,"inV":50,"properties":{"weight":2}},{"id":4243,"inV":48,"properties":{"weight":8}},{"id":4244,"inV":54,"properties":{"weight":13}},{"id":4245,"inV":19,"properties":{"weight":9}},{"id":4246,"inV":72,"properties":{"weight":4}},{"id":4247,"inV":14,"properties":{"weight":1}},{"id":4248,"inV":122,"properties":{"weight":2}},{"id":4249,"inV":235,"properties":{"weight":1}},{"id":4250,"inV":218,"properties":{"weight":1}},{"id":4251,"inV":252,"pr
 operties":{"weight":1}},{"id":4252,"inV":89,"properties":{"weight":3}},{"id":4253,"inV":57,"properties":{"weight":12}},{"id":4254,"inV":49,"properties":{"weight":3}},{"id":4255,"inV":94,"properties":{"weight":3}},{"id":4256,"inV":153,"properties":{"weight":1}},{"id":4257,"inV":13,"properties":{"weight":1}},{"id":4258,"inV":160,"properties":{"weight":1}},{"id":4259,"inV":51,"properties":{"weight":10}},{"id":4260,"inV":18,"properties":{"weight":3}},{"id":4261,"inV":202,"properties":{"weight":4}},{"id":4262,"inV":17,"properties":{"weight":5}},{"id":4263,"inV":46,"properties":{"weight":1}},{"id":4264,"inV":9,"properties":{"weight":1}},{"id":4265,"inV":55,"properties":{"weight":1}},{"id":4266,"inV":125,"properties":{"weight":1}},{"id":4267,"inV":69,"properties":{"weight":2}},{"id":4268,"inV":98,"properties":{"weight":8}},{"id":4269,"inV":82,"properties":{"weight":4}},{"id":4270,"inV":154,"properties":{"weight":1}},{"id":4271,"inV":105,"properties":{"weight":7}},{"id":4272,"inV":112,"prop
 erties":{"weight":2}},{"id":4273,"inV":109,"properties":{"weight":1}},{"id":4274,"inV":42,"properties":{"weight":2}},{"id":4275,"inV":121,"properties":{"weight":1}},{"id":4276,"inV":73,"properties":{"weight":5}},{"id":4277,"inV":106,"properties":{"weight":1}},{"id":4278,"inV":116,"properties":{"weight":1}},{"id":4279,"inV":68,"properties":{"weight":2}},{"id":4280,"inV":152,"properties":{"weight":1}},{"id":4281,"inV":23,"properties":{"weight":6}},{"id":4282,"inV":88,"properties":{"weight":1}},{"id":4283,"inV":39,"properties":{"weight":4}},{"id":4284,"inV":12,"properties":{"weight":1}},{"id":4285,"inV":111,"properties":{"weight":1}},{"id":4286,"inV":99,"properties":{"weight":1}},{"id":4287,"inV":87,"properties":{"weight":2}},{"id":4288,"inV":108,"properties":{"weight":2}},{"id":4289,"inV":53,"properties":{"weight":4}},{"id":4290,"inV":26,"properties":{"weight":5}},{"id":4291,"inV":117,"properties":{"weight":2}},{"id":4292,"inV":115,"properties":{"weight":2}},{"id":4293,"inV":63,"prope
 rties":{"weight":3}},{"id":4294,"inV":103,"properties":{"weight":1}}],"sungBy":[{"id":7460,"inV":351}],"writtenBy":[{"id":7459,"inV":471}]},"properties":{"name":[{"id":27,"value":"BEAT IT ON DOWN THE LINE"}],"songType":[{"id":29,"value":"cover"}],"performances":[{"id":28,"value":325}]}}
+{"id":11,"label":"song","inE":{"followedBy":[{"id":1088,"outV":59,"properties":{"weight":14}},{"id":6273,"outV":49,"properties":{"weight":2}},{"id":1989,"outV":152,"properties":{"weight":2}},{"id":7,"outV":9,"properties":{"weight":2}},{"id":4552,"outV":105,"properties":{"weight":3}},{"id":521,"outV":205,"properties":{"weight":1}},{"id":714,"outV":80,"properties":{"weight":5}},{"id":3146,"outV":104,"properties":{"weight":3}},{"id":4876,"outV":100,"properties":{"weight":2}},{"id":2190,"outV":235,"properties":{"weight":1}},{"id":4496,"outV":202,"properties":{"weight":1}},{"id":2513,"outV":57,"properties":{"weight":4}},{"id":4053,"outV":173,"properties":{"weight":1}},{"id":5078,"outV":4,"properties":{"weight":3}},{"id":1309,"outV":27,"properties":{"weight":5}},{"id":4769,"outV":114,"properties":{"weight":1}},{"id":5025,"outV":30,"properties":{"weight":1}},{"id":3554,"outV":56,"properties":{"weight":7}},{"id":1064,"outV":73,"properties":{"weight":1}},{"id":2920,"outV":78,"properties":{"w
 eight":2}},{"id":6056,"outV":115,"properties":{"weight":2}},{"id":41,"outV":46,"properties":{"weight":2}},{"id":3434,"outV":58,"properties":{"weight":5}},{"id":6442,"outV":187,"properties":{"weight":7}},{"id":1775,"outV":234,"properties":{"weight":4}},{"id":3888,"outV":51,"properties":{"weight":1}},{"id":626,"outV":23,"properties":{"weight":1}},{"id":1396,"outV":190,"properties":{"weight":1}},{"id":4020,"outV":191,"properties":{"weight":1}},{"id":6772,"outV":39,"properties":{"weight":1}},{"id":3637,"outV":24,"properties":{"weight":2}},{"id":6072,"outV":72,"properties":{"weight":5}},{"id":4157,"outV":54,"properties":{"weight":2}}]},"outE":{"followedBy":[{"id":972,"inV":57,"properties":{"weight":4}},{"id":973,"inV":59,"properties":{"weight":3}},{"id":974,"inV":53,"properties":{"weight":4}},{"id":975,"inV":54,"properties":{"weight":15}},{"id":976,"inV":56,"properties":{"weight":3}},{"id":977,"inV":48,"properties":{"weight":3}},{"id":978,"inV":72,"properties":{"weight":4}},{"id":979,"in
 V":19,"properties":{"weight":9}},{"id":980,"inV":4,"properties":{"weight":3}},{"id":981,"inV":58,"properties":{"weight":6}},{"id":982,"inV":46,"properties":{"weight":1}},{"id":983,"inV":234,"properties":{"weight":7}},{"id":984,"inV":235,"properties":{"weight":2}},{"id":985,"inV":207,"properties":{"weight":4}},{"id":986,"inV":39,"properties":{"weight":3}},{"id":987,"inV":50,"properties":{"weight":1}},{"id":988,"inV":104,"properties":{"weight":2}},{"id":989,"inV":49,"properties":{"weight":1}},{"id":990,"inV":17,"properties":{"weight":3}},{"id":991,"inV":100,"properties":{"weight":1}},{"id":992,"inV":24,"properties":{"weight":1}},{"id":993,"inV":170,"properties":{"weight":2}},{"id":994,"inV":73,"properties":{"weight":1}},{"id":995,"inV":173,"properties":{"weight":1}},{"id":996,"inV":236,"properties":{"weight":1}},{"id":997,"inV":202,"properties":{"weight":3}},{"id":998,"inV":80,"properties":{"weight":2}},{"id":999,"inV":115,"properties":{"weight":4}},{"id":1000,"inV":105,"properties":{
 "weight":1}}],"sungBy":[{"id":7072,"inV":351}],"writtenBy":[{"id":7071,"inV":350}]},"properties":{"name":[{"id":30,"value":"BLACK THROATED WIND"}],"songType":[{"id":32,"value":"original"}],"performances":[{"id":31,"value":158}]}}
+{"id":12,"label":"song","inE":{"followedBy":[{"id":3072,"outV":153,"properties":{"weight":4}},{"id":2433,"outV":68,"properties":{"weight":1}},{"id":1410,"outV":83,"properties":{"weight":1}},{"id":3331,"outV":155,"properties":{"weight":2}},{"id":4227,"outV":52,"properties":{"weight":3}},{"id":1028,"outV":73,"properties":{"weight":12}},{"id":4102,"outV":48,"properties":{"weight":33}},{"id":8,"outV":9,"properties":{"weight":3}},{"id":6281,"outV":49,"properties":{"weight":2}},{"id":652,"outV":23,"properties":{"weight":2}},{"id":5388,"outV":69,"properties":{"weight":1}},{"id":525,"outV":120,"properties":{"weight":1}},{"id":3726,"outV":3,"properties":{"weight":1}},{"id":783,"outV":122,"properties":{"weight":1}},{"id":3855,"outV":60,"properties":{"weight":1}},{"id":1938,"outV":148,"properties":{"weight":1}},{"id":3986,"outV":106,"properties":{"weight":1}},{"id":916,"outV":91,"properties":{"weight":1}},{"id":1172,"outV":26,"properties":{"weight":4}},{"id":6935,"outV":84,"properties":{"weigh
 t":5}},{"id":3225,"outV":63,"properties":{"weight":4}},{"id":5017,"outV":30,"properties":{"weight":1}},{"id":155,"outV":108,"properties":{"weight":6}},{"id":2203,"outV":75,"properties":{"weight":3}},{"id":4893,"outV":100,"properties":{"weight":7}},{"id":4640,"outV":154,"properties":{"weight":10}},{"id":5665,"outV":169,"properties":{"weight":1}},{"id":1702,"outV":124,"properties":{"weight":1}},{"id":2598,"outV":112,"properties":{"weight":7}},{"id":5286,"outV":32,"properties":{"weight":4}},{"id":3879,"outV":51,"properties":{"weight":12}},{"id":4007,"outV":225,"properties":{"weight":1}},{"id":424,"outV":38,"properties":{"weight":5}},{"id":4522,"outV":105,"properties":{"weight":12}},{"id":5034,"outV":47,"properties":{"weight":1}},{"id":4779,"outV":114,"properties":{"weight":3}},{"id":6576,"outV":116,"properties":{"weight":1}},{"id":6835,"outV":64,"properties":{"weight":1}},{"id":6455,"outV":187,"properties":{"weight":12}},{"id":824,"outV":171,"properties":{"weight":1}},{"id":5304,"outV"
 :170,"properties":{"weight":2}},{"id":1722,"outV":82,"properties":{"weight":1}},{"id":6074,"outV":72,"properties":{"weight":4}},{"id":4284,"outV":10,"properties":{"weight":1}},{"id":2109,"outV":17,"properties":{"weight":24}},{"id":703,"outV":206,"properties":{"weight":2}},{"id":5440,"outV":239,"properties":{"weight":2}},{"id":5952,"outV":50,"properties":{"weight":7}},{"id":1858,"outV":94,"properties":{"weight":2}},{"id":1347,"outV":31,"properties":{"weight":1}},{"id":1605,"outV":18,"properties":{"weight":1}},{"id":4165,"outV":54,"properties":{"weight":17}},{"id":3654,"outV":24,"properties":{"weight":3}},{"id":4038,"outV":173,"properties":{"weight":1}},{"id":6598,"outV":127,"properties":{"weight":1}},{"id":3271,"outV":160,"properties":{"weight":1}},{"id":3527,"outV":223,"properties":{"weight":1}},{"id":1096,"outV":59,"properties":{"weight":26}},{"id":3144,"outV":104,"properties":{"weight":24}},{"id":1993,"outV":152,"properties":{"weight":2}},{"id":6985,"outV":175,"properties":{"weigh
 t":1}},{"id":6730,"outV":53,"properties":{"weight":4}},{"id":3019,"outV":14,"properties":{"weight":1}},{"id":3788,"outV":168,"properties":{"weight":1}},{"id":5072,"outV":4,"properties":{"weight":26}},{"id":2515,"outV":57,"properties":{"weight":3}},{"id":1365,"outV":130,"properties":{"weight":2}},{"id":2647,"outV":137,"properties":{"weight":1}},{"id":730,"outV":80,"properties":{"weight":12}},{"id":2780,"outV":15,"properties":{"weight":3}},{"id":482,"outV":98,"properties":{"weight":8}},{"id":3810,"outV":88,"properties":{"weight":6}},{"id":7013,"outV":89,"properties":{"weight":1}},{"id":4072,"outV":109,"properties":{"weight":1}},{"id":2281,"outV":25,"properties":{"weight":2}},{"id":2668,"outV":13,"properties":{"weight":3}},{"id":3565,"outV":56,"properties":{"weight":9}},{"id":1262,"outV":27,"properties":{"weight":17}},{"id":2031,"outV":180,"properties":{"weight":1}},{"id":6769,"outV":39,"properties":{"weight":2}},{"id":1779,"outV":234,"properties":{"weight":1}},{"id":4468,"outV":202,"p
 roperties":{"weight":4}},{"id":1909,"outV":103,"properties":{"weight":1}},{"id":2934,"outV":78,"properties":{"weight":1}},{"id":3446,"outV":58,"properties":{"weight":4}},{"id":381,"outV":74,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":6656,"inV":49,"properties":{"weight":9}},{"id":6657,"inV":19,"properties":{"weight":3}},{"id":6658,"inV":27,"properties":{"weight":9}},{"id":6659,"inV":252,"properties":{"weight":1}},{"id":6660,"inV":206,"properties":{"weight":1}},{"id":6661,"inV":89,"properties":{"weight":4}},{"id":6662,"inV":160,"properties":{"weight":1}},{"id":6663,"inV":15,"properties":{"weight":167}},{"id":6664,"inV":4,"properties":{"weight":3}},{"id":6665,"inV":202,"properties":{"weight":2}},{"id":6666,"inV":5,"properties":{"weight":1}},{"id":6667,"inV":9,"properties":{"weight":2}},{"id":6668,"inV":83,"properties":{"weight":3}},{"id":6669,"inV":3,"properties":{"weight":1}},{"id":6670,"inV":52,"properties":{"weight":1}},{"id":6671,"inV":25,"properties":{"weight":1}},{"
 id":6672,"inV":46,"properties":{"weight":1}},{"id":6673,"inV":123,"properties":{"weight":2}},{"id":6674,"inV":51,"properties":{"weight":4}},{"id":6675,"inV":17,"properties":{"weight":3}},{"id":6676,"inV":56,"properties":{"weight":5}},{"id":6677,"inV":98,"properties":{"weight":5}},{"id":6678,"inV":104,"properties":{"weight":4}},{"id":6679,"inV":69,"properties":{"weight":3}},{"id":6680,"inV":170,"properties":{"weight":2}},{"id":6681,"inV":82,"properties":{"weight":1}},{"id":6682,"inV":80,"properties":{"weight":2}},{"id":6683,"inV":215,"properties":{"weight":1}},{"id":6684,"inV":48,"properties":{"weight":1}},{"id":6685,"inV":14,"properties":{"weight":3}},{"id":6686,"inV":50,"properties":{"weight":2}},{"id":6687,"inV":24,"properties":{"weight":83}},{"id":6688,"inV":18,"properties":{"weight":1}},{"id":6689,"inV":39,"properties":{"weight":6}},{"id":6690,"inV":105,"properties":{"weight":1}},{"id":6691,"inV":131,"properties":{"weight":14}},{"id":6645,"inV":72,"properties":{"weight":7}},{"id
 ":6646,"inV":58,"properties":{"weight":7}},{"id":6647,"inV":57,"properties":{"weight":6}},{"id":6648,"inV":54,"properties":{"weight":8}},{"id":6649,"inV":59,"properties":{"weight":14}},{"id":6650,"inV":100,"properties":{"weight":7}},{"id":6651,"inV":53,"properties":{"weight":4}},{"id":6652,"inV":148,"properties":{"weight":1}},{"id":6653,"inV":218,"properties":{"weight":2}},{"id":6654,"inV":235,"properties":{"weight":2}},{"id":6655,"inV":130,"properties":{"weight":1}}],"sungBy":[{"id":7776,"inV":351}],"writtenBy":[{"id":7775,"inV":659}]},"properties":{"name":[{"id":33,"value":"ME AND MY UNCLE"}],"songType":[{"id":35,"value":"cover"}],"performances":[{"id":34,"value":616}]}}
+{"id":13,"label":"song","inE":{"followedBy":[{"id":4865,"outV":35,"properties":{"weight":4}},{"id":1026,"outV":73,"properties":{"weight":1}},{"id":3330,"outV":155,"properties":{"weight":2}},{"id":5636,"outV":22,"properties":{"weight":1}},{"id":775,"outV":122,"properties":{"weight":1}},{"id":1799,"outV":196,"properties":{"weight":2}},{"id":6407,"outV":134,"properties":{"weight":24}},{"id":9,"outV":9,"properties":{"weight":6}},{"id":4874,"outV":100,"properties":{"weight":6}},{"id":4108,"outV":48,"properties":{"weight":3}},{"id":5132,"outV":222,"properties":{"weight":1}},{"id":2830,"outV":101,"properties":{"weight":8}},{"id":3857,"outV":60,"properties":{"weight":35}},{"id":6931,"outV":84,"properties":{"weight":7}},{"id":533,"outV":120,"properties":{"weight":1}},{"id":6165,"outV":36,"properties":{"weight":1}},{"id":4630,"outV":154,"properties":{"weight":8}},{"id":5142,"outV":125,"properties":{"weight":11}},{"id":283,"outV":5,"properties":{"weight":3}},{"id":1567,"outV":18,"properties":{
 "weight":3}},{"id":1823,"outV":41,"properties":{"weight":4}},{"id":3359,"outV":184,"properties":{"weight":3}},{"id":3617,"outV":24,"properties":{"weight":1}},{"id":3108,"outV":153,"properties":{"weight":1}},{"id":3878,"outV":51,"properties":{"weight":6}},{"id":2347,"outV":87,"properties":{"weight":8}},{"id":6443,"outV":187,"properties":{"weight":47}},{"id":6700,"outV":141,"properties":{"weight":4}},{"id":5682,"outV":167,"properties":{"weight":1}},{"id":53,"outV":46,"properties":{"weight":4}},{"id":823,"outV":171,"properties":{"weight":24}},{"id":4151,"outV":218,"properties":{"weight":2}},{"id":5943,"outV":50,"properties":{"weight":1}},{"id":2617,"outV":158,"properties":{"weight":1}},{"id":3386,"outV":177,"properties":{"weight":2}},{"id":4411,"outV":327,"properties":{"weight":1}},{"id":1852,"outV":94,"properties":{"weight":4}},{"id":6206,"outV":319,"properties":{"weight":1}},{"id":1087,"outV":59,"properties":{"weight":5}},{"id":2111,"outV":17,"properties":{"weight":4}},{"id":4159,"ou
 tV":54,"properties":{"weight":16}},{"id":6723,"outV":53,"properties":{"weight":6}},{"id":6984,"outV":175,"properties":{"weight":1}},{"id":3145,"outV":104,"properties":{"weight":4}},{"id":4947,"outV":86,"properties":{"weight":1}},{"id":5203,"outV":99,"properties":{"weight":2}},{"id":1366,"outV":130,"properties":{"weight":12}},{"id":1622,"outV":210,"properties":{"weight":1}},{"id":2908,"outV":118,"properties":{"weight":1}},{"id":1885,"outV":103,"properties":{"weight":3}},{"id":4959,"outV":207,"properties":{"weight":6}},{"id":3435,"outV":58,"properties":{"weight":8}},{"id":6763,"outV":39,"properties":{"weight":8}},{"id":5741,"outV":129,"properties":{"weight":12}},{"id":366,"outV":74,"properties":{"weight":38}},{"id":2926,"outV":78,"properties":{"weight":3}},{"id":623,"outV":23,"properties":{"weight":1}},{"id":4721,"outV":186,"properties":{"weight":4}},{"id":2165,"outV":151,"properties":{"weight":1}},{"id":886,"outV":140,"properties":{"weight":1}},{"id":3703,"outV":3,"properties":{"weig
 ht":5}},{"id":7031,"outV":89,"properties":{"weight":4}},{"id":1411,"outV":83,"properties":{"weight":7}},{"id":3974,"outV":106,"properties":{"weight":2}},{"id":6278,"outV":49,"properties":{"weight":1}},{"id":912,"outV":91,"properties":{"weight":59}},{"id":2192,"outV":235,"properties":{"weight":1}},{"id":4759,"outV":37,"properties":{"weight":2}},{"id":1179,"outV":26,"properties":{"weight":2}},{"id":5789,"outV":76,"properties":{"weight":3}},{"id":4257,"outV":10,"properties":{"weight":1}},{"id":6561,"outV":172,"properties":{"weight":1}},{"id":4771,"outV":114,"properties":{"weight":3}},{"id":1454,"outV":81,"properties":{"weight":10}},{"id":6073,"outV":72,"properties":{"weight":13}},{"id":5306,"outV":170,"properties":{"weight":4}},{"id":4027,"outV":173,"properties":{"weight":3}},{"id":1725,"outV":82,"properties":{"weight":3}},{"id":960,"outV":67,"properties":{"weight":2}},{"id":1985,"outV":152,"properties":{"weight":1}},{"id":6594,"outV":127,"properties":{"weight":6}},{"id":6342,"outV":21
 ,"properties":{"weight":4}},{"id":455,"outV":139,"properties":{"weight":1}},{"id":3277,"outV":160,"properties":{"weight":3}},{"id":5837,"outV":258,"properties":{"weight":1}},{"id":208,"outV":70,"properties":{"weight":2}},{"id":2256,"outV":29,"properties":{"weight":1}},{"id":721,"outV":80,"properties":{"weight":1}},{"id":2771,"outV":15,"properties":{"weight":3}},{"id":5076,"outV":4,"properties":{"weight":12}},{"id":2519,"outV":57,"properties":{"weight":10}},{"id":4312,"outV":110,"properties":{"weight":1}},{"id":2268,"outV":25,"properties":{"weight":8}},{"id":2014,"outV":149,"properties":{"weight":1}},{"id":3552,"outV":56,"properties":{"weight":8}},{"id":481,"outV":98,"properties":{"weight":3}},{"id":1764,"outV":28,"properties":{"weight":3}},{"id":1258,"outV":27,"properties":{"weight":3}},{"id":1518,"outV":164,"properties":{"weight":1}},{"id":4846,"outV":119,"properties":{"weight":1}},{"id":4593,"outV":85,"properties":{"weight":2}},{"id":244,"outV":150,"properties":{"weight":3}},{"id"
 :1780,"outV":234,"properties":{"weight":2}},{"id":4344,"outV":62,"properties":{"weight":12}},{"id":2044,"outV":92,"properties":{"weight":2}},{"id":5374,"outV":69,"properties":{"weight":34}},{"id":5886,"outV":96,"properties":{"weight":15}}]},"outE":{"followedBy":[{"id":2688,"inV":94,"properties":{"weight":4}},{"id":2689,"inV":130,"properties":{"weight":11}},{"id":2690,"inV":83,"properties":{"weight":13}},{"id":2691,"inV":170,"properties":{"weight":1}},{"id":2692,"inV":51,"properties":{"weight":3}},{"id":2693,"inV":22,"properties":{"weight":2}},{"id":2694,"inV":296,"properties":{"weight":1}},{"id":2695,"inV":52,"properties":{"weight":1}},{"id":2696,"inV":17,"properties":{"weight":2}},{"id":2697,"inV":202,"properties":{"weight":3}},{"id":2698,"inV":27,"properties":{"weight":2}},{"id":2699,"inV":9,"properties":{"weight":3}},{"id":2700,"inV":25,"properties":{"weight":12}},{"id":2701,"inV":195,"properties":{"weight":2}},{"id":2702,"inV":206,"properties":{"weight":1}},{"id":2703,"inV":39,"
 properties":{"weight":1}},{"id":2704,"inV":69,"properties":{"weight":6}},{"id":2705,"inV":24,"properties":{"weight":1}},{"id":2706,"inV":82,"properties":{"weight":3}},{"id":2707,"inV":57,"properties":{"weight":1}},{"id":2708,"inV":134,"properties":{"weight":9}},{"id":2709,"inV":110,"properties":{"weight":1}},{"id":2710,"inV":99,"properties":{"weight":3}},{"id":2711,"inV":76,"properties":{"weight":4}},{"id":2712,"inV":3,"properties":{"weight":3}},{"id":2713,"inV":178,"properties":{"weight":1}},{"id":2714,"inV":184,"properties":{"weight":1}},{"id":2715,"inV":60,"properties":{"weight":21}},{"id":2716,"inV":148,"properties":{"weight":1}},{"id":2717,"inV":32,"properties":{"weight":1}},{"id":2718,"inV":91,"properties":{"weight":42}},{"id":2719,"inV":103,"properties":{"weight":1}},{"id":2720,"inV":114,"properties":{"weight":4}},{"id":2721,"inV":141,"properties":{"weight":4}},{"id":2722,"inV":154,"properties":{"weight":3}},{"id":2723,"inV":109,"properties":{"weight":2}},{"id":2724,"inV":125
 ,"properties":{"weight":9}},{"id":2725,"inV":85,"properties":{"weight":2}},{"id":2726,"inV":84,"properties":{"weight":5}},{"id":2727,"inV":50,"properties":{"weight":1}},{"id":2728,"inV":214,"properties":{"weight":1}},{"id":2729,"inV":72,"properties":{"weight":1}},{"id":2730,"inV":246,"properties":{"weight":1}},{"id":2731,"inV":129,"properties":{"weight":29}},{"id":2732,"inV":65,"properties":{"weight":2}},{"id":2733,"inV":133,"properties":{"weight":1}},{"id":2734,"inV":62,"properties":{"weight":1}},{"id":2735,"inV":29,"properties":{"weight":4}},{"id":2736,"inV":5,"properties":{"weight":3}},{"id":2737,"inV":183,"properties":{"weight":3}},{"id":2738,"inV":210,"properties":{"weight":1}},{"id":2739,"inV":128,"properties":{"weight":1}},{"id":2740,"inV":67,"properties":{"weight":1}},{"id":2741,"inV":212,"properties":{"weight":1}},{"id":2742,"inV":70,"properties":{"weight":2}},{"id":2743,"inV":75,"properties":{"weight":1}},{"id":2744,"inV":71,"properties":{"weight":1}},{"id":2745,"inV":168,
 "properties":{"weight":2}},{"id":2746,"inV":157,"properties":{"weight":1}},{"id":2747,"inV":92,"properties":{"weight":1}},{"id":2748,"inV":89,"properties":{"weight":5}},{"id":2749,"inV":81,"properties":{"weight":1}},{"id":2750,"inV":187,"properties":{"weight":1}},{"id":2751,"inV":164,"properties":{"weight":1}},{"id":2752,"inV":136,"properties":{"weight":1}},{"id":2753,"inV":46,"properties":{"weight":1}},{"id":2660,"inV":207,"properties":{"weight":3}},{"id":2661,"inV":122,"properties":{"weight":17}},{"id":2662,"inV":96,"properties":{"weight":157}},{"id":2663,"inV":104,"properties":{"weight":1}},{"id":2664,"inV":26,"properties":{"weight":14}},{"id":2665,"inV":123,"properties":{"weight":3}},{"id":2666,"inV":19,"properties":{"weight":12}},{"id":2667,"inV":100,"properties":{"weight":5}},{"id":2668,"inV":12,"properties":{"weight":3}},{"id":2669,"inV":49,"properties":{"weight":12}},{"id":2670,"inV":21,"properties":{"weight":4}},{"id":2671,"inV":120,"properties":{"weight":9}},{"id":2672,"in
 V":23,"properties":{"weight":5}},{"id":2673,"inV":59,"properties":{"weight":6}},{"id":2674,"inV":54,"properties":{"weight":5}},{"id":2675,"inV":80,"properties":{"weight":1}},{"id":2676,"inV":234,"properties":{"weight":1}},{"id":2677,"inV":53,"properties":{"weight":2}},{"id":2678,"inV":225,"properties":{"weight":1}},{"id":2679,"inV":235,"properties":{"weight":2}},{"id":2680,"inV":160,"properties":{"weight":3}},{"id":2681,"inV":56,"properties":{"weight":3}},{"id":2682,"inV":127,"properties":{"weight":6}},{"id":2683,"inV":18,"properties":{"weight":3}},{"id":2684,"inV":4,"properties":{"weight":9}},{"id":2685,"inV":15,"properties":{"weight":7}},{"id":2686,"inV":74,"properties":{"weight":86}},{"id":2687,"inV":153,"properties":{"weight":12}}],"sungBy":[{"id":7292,"inV":359}],"writtenBy":[{"id":7291,"inV":339}]},"properties":{"name":[{"id":36,"value":"PLAYING IN THE BAND"}],"songType":[{"id":38,"value":"original"}],"performances":[{"id":37,"value":582}]}}
+{"id":14,"label":"song","inE":{"followedBy":[{"id":6784,"outV":39,"properties":{"weight":10}},{"id":5251,"outV":32,"properties":{"weight":1}},{"id":4229,"outV":52,"properties":{"weight":3}},{"id":4745,"outV":294,"properties":{"weight":4}},{"id":10,"outV":9,"properties":{"weight":3}},{"id":6283,"outV":49,"properties":{"weight":2}},{"id":4364,"outV":62,"properties":{"weight":16}},{"id":4109,"outV":48,"properties":{"weight":10}},{"id":6544,"outV":55,"properties":{"weight":1}},{"id":4881,"outV":100,"properties":{"weight":20}},{"id":6034,"outV":115,"properties":{"weight":1}},{"id":531,"outV":120,"properties":{"weight":1}},{"id":3219,"outV":63,"properties":{"weight":2}},{"id":4758,"outV":37,"properties":{"weight":2}},{"id":4247,"outV":10,"properties":{"weight":1}},{"id":4631,"outV":154,"properties":{"weight":6}},{"id":3866,"outV":60,"properties":{"weight":2}},{"id":1947,"outV":148,"properties":{"weight":1}},{"id":1436,"outV":83,"properties":{"weight":7}},{"id":2844,"outV":101,"properties"
 :{"weight":1}},{"id":6685,"outV":12,"properties":{"weight":3}},{"id":1183,"outV":26,"properties":{"weight":2}},{"id":160,"outV":108,"properties":{"weight":2}},{"id":4517,"outV":105,"properties":{"weight":6}},{"id":6954,"outV":84,"properties":{"weight":4}},{"id":1451,"outV":81,"properties":{"weight":12}},{"id":1582,"outV":18,"properties":{"weight":4}},{"id":3892,"outV":51,"properties":{"weight":10}},{"id":2107,"outV":17,"properties":{"weight":19}},{"id":5820,"outV":76,"properties":{"weight":1}},{"id":6463,"outV":187,"properties":{"weight":26}},{"id":1090,"outV":59,"properties":{"weight":7}},{"id":1731,"outV":82,"properties":{"weight":4}},{"id":6083,"outV":72,"properties":{"weight":9}},{"id":4037,"outV":173,"properties":{"weight":1}},{"id":2375,"outV":87,"properties":{"weight":8}},{"id":4169,"outV":54,"properties":{"weight":36}},{"id":5578,"outV":42,"properties":{"weight":1}},{"id":716,"outV":80,"properties":{"weight":10}},{"id":5964,"outV":50,"properties":{"weight":2}},{"id":845,"out
 V":171,"properties":{"weight":11}},{"id":5709,"outV":20,"properties":{"weight":1}},{"id":5838,"outV":258,"properties":{"weight":1}},{"id":1232,"outV":248,"properties":{"weight":1}},{"id":6993,"outV":175,"properties":{"weight":1}},{"id":3666,"outV":24,"properties":{"weight":2}},{"id":3156,"outV":104,"properties":{"weight":6}},{"id":3796,"outV":88,"properties":{"weight":1}},{"id":6742,"outV":53,"properties":{"weight":15}},{"id":2523,"outV":57,"properties":{"weight":9}},{"id":864,"outV":189,"properties":{"weight":2}},{"id":3556,"outV":56,"properties":{"weight":21}},{"id":102,"outV":46,"properties":{"weight":1}},{"id":5096,"outV":4,"properties":{"weight":2}},{"id":489,"outV":98,"properties":{"weight":3}},{"id":1257,"outV":27,"properties":{"weight":19}},{"id":2030,"outV":180,"properties":{"weight":2}},{"id":2159,"outV":151,"properties":{"weight":1}},{"id":2803,"outV":15,"properties":{"weight":4}},{"id":2935,"outV":78,"properties":{"weight":1}},{"id":2426,"outV":68,"properties":{"weight":
 4}},{"id":3962,"outV":106,"properties":{"weight":2}},{"id":4474,"outV":202,"properties":{"weight":1}},{"id":123,"outV":97,"properties":{"weight":1}},{"id":4092,"outV":109,"properties":{"weight":1}},{"id":5628,"outV":22,"properties":{"weight":1}},{"id":1021,"outV":73,"properties":{"weight":20}},{"id":3455,"outV":58,"properties":{"weight":12}}]},"outE":{"followedBy":[{"id":2981,"inV":50,"properties":{"weight":2}},{"id":2982,"inV":4,"properties":{"weight":3}},{"id":2983,"inV":53,"properties":{"weight":8}},{"id":2984,"inV":57,"properties":{"weight":55}},{"id":2985,"inV":89,"properties":{"weight":2}},{"id":2986,"inV":122,"properties":{"weight":1}},{"id":2987,"inV":153,"properties":{"weight":1}},{"id":2988,"inV":72,"properties":{"weight":26}},{"id":2989,"inV":19,"properties":{"weight":17}},{"id":2990,"inV":9,"properties":{"weight":4}},{"id":2991,"inV":17,"properties":{"weight":13}},{"id":2992,"inV":46,"properties":{"weight":5}},{"id":2993,"inV":51,"properties":{"weight":15}},{"id":2994,"i
 nV":54,"properties":{"weight":28}},{"id":2995,"inV":202,"properties":{"weight":3}},{"id":2996,"inV":27,"properties":{"weight":6}},{"id":2997,"inV":52,"properties":{"weight":3}},{"id":2998,"inV":58,"properties":{"weight":1}},{"id":2999,"inV":56,"properties":{"weight":8}},{"id":3000,"inV":100,"properties":{"weight":12}},{"id":3001,"inV":99,"properties":{"weight":26}},{"id":3002,"inV":98,"properties":{"weight":3}},{"id":3003,"inV":104,"properties":{"weight":2}},{"id":3004,"inV":82,"properties":{"weight":6}},{"id":3005,"inV":215,"properties":{"weight":1}},{"id":3006,"inV":69,"properties":{"weight":2}},{"id":3007,"inV":103,"properties":{"weight":1}},{"id":3008,"inV":83,"properties":{"weight":8}},{"id":3009,"inV":101,"properties":{"weight":1}},{"id":3010,"inV":80,"properties":{"weight":8}},{"id":3011,"inV":121,"properties":{"weight":3}},{"id":3012,"inV":59,"properties":{"weight":1}},{"id":3013,"inV":26,"properties":{"weight":2}},{"id":3014,"inV":32,"properties":{"weight":2}},{"id":3015,"i
 nV":155,"properties":{"weight":1}},{"id":3016,"inV":42,"properties":{"weight":2}},{"id":3017,"inV":18,"properties":{"weight":1}},{"id":3018,"inV":105,"properties":{"weight":11}},{"id":3019,"inV":12,"properties":{"weight":1}},{"id":3020,"inV":49,"properties":{"weight":27}},{"id":3021,"inV":65,"properties":{"weight":2}},{"id":3022,"inV":85,"properties":{"weight":2}},{"id":3023,"inV":73,"properties":{"weight":8}},{"id":3024,"inV":106,"properties":{"weight":3}},{"id":3025,"inV":189,"properties":{"weight":3}},{"id":3026,"inV":10,"properties":{"weight":1}},{"id":3027,"inV":210,"properties":{"weight":3}},{"id":3028,"inV":76,"properties":{"weight":1}},{"id":3029,"inV":87,"properties":{"weight":1}},{"id":3030,"inV":96,"properties":{"weight":1}},{"id":3031,"inV":150,"properties":{"weight":1}},{"id":3032,"inV":66,"properties":{"weight":1}},{"id":3033,"inV":5,"properties":{"weight":1}},{"id":3034,"inV":91,"properties":{"weight":29}},{"id":3035,"inV":60,"properties":{"weight":6}},{"id":3036,"inV
 ":67,"properties":{"weight":1}},{"id":3037,"inV":74,"properties":{"weight":1}},{"id":3038,"inV":21,"properties":{"weight":1}},{"id":3039,"inV":169,"properties":{"weight":1}},{"id":3040,"inV":62,"properties":{"weight":1}},{"id":3041,"inV":39,"properties":{"weight":2}},{"id":3042,"inV":175,"properties":{"weight":1}},{"id":3043,"inV":172,"properties":{"weight":1}},{"id":3044,"inV":28,"properties":{"weight":5}},{"id":3045,"inV":173,"properties":{"weight":1}},{"id":3046,"inV":37,"properties":{"weight":5}},{"id":3047,"inV":35,"properties":{"weight":2}}],"sungBy":[{"id":7232,"inV":351}],"writtenBy":[{"id":7231,"inV":350}]},"properties":{"name":[{"id":39,"value":"LOOKS LIKE RAIN"}],"songType":[{"id":41,"value":"original"}],"performances":[{"id":40,"value":417}]}}
+{"id":15,"label":"song","inE":{"followedBy":[{"id":1152,"outV":26,"properties":{"weight":1}},{"id":769,"outV":122,"properties":{"weight":3}},{"id":5379,"outV":69,"properties":{"weight":4}},{"id":3844,"outV":60,"properties":{"weight":2}},{"id":1414,"outV":83,"properties":{"weight":2}},{"id":6663,"outV":12,"properties":{"weight":167}},{"id":4872,"outV":100,"properties":{"weight":9}},{"id":4105,"outV":48,"properties":{"weight":4}},{"id":11,"outV":9,"properties":{"weight":3}},{"id":4622,"outV":154,"properties":{"weight":1}},{"id":2833,"outV":101,"properties":{"weight":1}},{"id":2195,"outV":235,"properties":{"weight":1}},{"id":5141,"outV":125,"properties":{"weight":2}},{"id":3224,"outV":63,"properties":{"weight":2}},{"id":1945,"outV":148,"properties":{"weight":2}},{"id":5024,"outV":30,"properties":{"weight":2}},{"id":2597,"outV":112,"properties":{"weight":35}},{"id":1062,"outV":73,"properties":{"weight":1}},{"id":4776,"outV":114,"properties":{"weight":1}},{"id":5032,"outV":47,"properties
 ":{"weight":1}},{"id":6698,"outV":141,"properties":{"weight":1}},{"id":3885,"outV":51,"properties":{"weight":14}},{"id":1712,"outV":82,"properties":{"weight":4}},{"id":5301,"outV":170,"properties":{"weight":1}},{"id":1847,"outV":94,"properties":{"weight":6}},{"id":4153,"outV":54,"properties":{"weight":7}},{"id":1339,"outV":31,"properties":{"weight":2}},{"id":6075,"outV":72,"properties":{"weight":4}},{"id":60,"outV":46,"properties":{"weight":1}},{"id":2108,"outV":17,"properties":{"weight":8}},{"id":6460,"outV":187,"properties":{"weight":10}},{"id":3653,"outV":24,"properties":{"weight":14}},{"id":3147,"outV":104,"properties":{"weight":2}},{"id":6731,"outV":53,"properties":{"weight":1}},{"id":1101,"outV":59,"properties":{"weight":2}},{"id":4052,"outV":173,"properties":{"weight":1}},{"id":2518,"outV":57,"properties":{"weight":5}},{"id":476,"outV":98,"properties":{"weight":3}},{"id":1372,"outV":130,"properties":{"weight":1}},{"id":1245,"outV":27,"properties":{"weight":5}},{"id":5085,"out
 V":4,"properties":{"weight":1}},{"id":2272,"outV":25,"properties":{"weight":4}},{"id":4577,"outV":254,"properties":{"weight":1}},{"id":5735,"outV":129,"properties":{"weight":2}},{"id":3432,"outV":58,"properties":{"weight":7}},{"id":746,"outV":80,"properties":{"weight":1}},{"id":3562,"outV":56,"properties":{"weight":6}},{"id":2411,"outV":68,"properties":{"weight":1}},{"id":2924,"outV":78,"properties":{"weight":3}},{"id":4467,"outV":202,"properties":{"weight":6}},{"id":376,"outV":74,"properties":{"weight":1}},{"id":5242,"outV":32,"properties":{"weight":2}},{"id":6267,"outV":49,"properties":{"weight":1}},{"id":2685,"outV":13,"properties":{"weight":7}}]},"outE":{"followedBy":[{"id":2816,"inV":103,"properties":{"weight":1}},{"id":2817,"inV":62,"properties":{"weight":1}},{"id":2818,"inV":64,"properties":{"weight":1}},{"id":2819,"inV":75,"properties":{"weight":3}},{"id":2820,"inV":152,"properties":{"weight":1}},{"id":2821,"inV":117,"properties":{"weight":1}},{"id":2822,"inV":168,"propertie
 s":{"weight":1}},{"id":2823,"inV":188,"properties":{"weight":1}},{"id":2824,"inV":131,"properties":{"weight":4}},{"id":2825,"inV":28,"properties":{"weight":1}},{"id":2826,"inV":124,"properties":{"weight":1}},{"id":2827,"inV":190,"properties":{"weight":1}},{"id":2828,"inV":137,"properties":{"weight":1}},{"id":2755,"inV":19,"properties":{"weight":8}},{"id":2756,"inV":56,"properties":{"weight":22}},{"id":2757,"inV":104,"properties":{"weight":17}},{"id":2758,"inV":49,"properties":{"weight":4}},{"id":2759,"inV":122,"properties":{"weight":3}},{"id":2760,"inV":23,"properties":{"weight":2}},{"id":2761,"inV":27,"properties":{"weight":23}},{"id":2762,"inV":89,"properties":{"weight":7}},{"id":2763,"inV":46,"properties":{"weight":1}},{"id":2764,"inV":57,"properties":{"weight":7}},{"id":2765,"inV":59,"properties":{"weight":6}},{"id":2766,"inV":58,"properties":{"weight":18}},{"id":2767,"inV":54,"properties":{"weight":25}},{"id":2768,"inV":100,"properties":{"weight":24}},{"id":2769,"inV":39,"prope
 rties":{"weight":3}},{"id":2770,"inV":160,"properties":{"weight":5}},{"id":2771,"inV":13,"properties":{"weight":3}},{"id":2772,"inV":51,"properties":{"weight":14}},{"id":2773,"inV":94,"properties":{"weight":4}},{"id":2774,"inV":148,"properties":{"weight":1}},{"id":2775,"inV":9,"properties":{"weight":5}},{"id":2776,"inV":48,"properties":{"weight":17}},{"id":2777,"inV":55,"properties":{"weight":1}},{"id":2778,"inV":72,"properties":{"weight":3}},{"id":2779,"inV":52,"properties":{"weight":1}},{"id":2780,"inV":12,"properties":{"weight":3}},{"id":2781,"inV":4,"properties":{"weight":4}},{"id":2782,"inV":83,"properties":{"weight":2}},{"id":2783,"inV":202,"properties":{"weight":6}},{"id":2784,"inV":82,"properties":{"weight":3}},{"id":2785,"inV":74,"properties":{"weight":1}},{"id":2786,"inV":69,"properties":{"weight":7}},{"id":2787,"inV":98,"properties":{"weight":10}},{"id":2788,"inV":21,"properties":{"weight":1}},{"id":2789,"inV":125,"properties":{"weight":1}},{"id":2790,"inV":170,"propertie
 s":{"weight":3}},{"id":2791,"inV":26,"properties":{"weight":1}},{"id":2792,"inV":60,"properties":{"weight":1}},{"id":2793,"inV":294,"properties":{"weight":2}},{"id":2794,"inV":99,"properties":{"weight":3}},{"id":2795,"inV":17,"properties":{"weight":10}},{"id":2796,"inV":63,"properties":{"weight":5}},{"id":2797,"inV":68,"properties":{"weight":3}},{"id":2798,"inV":108,"properties":{"weight":6}},{"id":2799,"inV":109,"properties":{"weight":1}},{"id":2800,"inV":196,"properties":{"weight":3}},{"id":2801,"inV":91,"properties":{"weight":1}},{"id":2802,"inV":18,"properties":{"weight":1}},{"id":2803,"inV":14,"properties":{"weight":4}},{"id":2804,"inV":105,"properties":{"weight":8}},{"id":2805,"inV":101,"properties":{"weight":2}},{"id":2806,"inV":10,"properties":{"weight":2}},{"id":2807,"inV":73,"properties":{"weight":26}},{"id":2808,"inV":78,"properties":{"weight":1}},{"id":2809,"inV":32,"properties":{"weight":3}},{"id":2810,"inV":106,"properties":{"weight":2}},{"id":2811,"inV":180,"propertie
 s":{"weight":2}},{"id":2812,"inV":88,"properties":{"weight":1}},{"id":2813,"inV":97,"properties":{"weight":1}},{"id":2814,"inV":53,"properties":{"weight":3}},{"id":2815,"inV":115,"properties":{"weight":4}}],"sungBy":[{"id":7472,"inV":351}],"writtenBy":[{"id":7471,"inV":479}]},"properties":{"name":[{"id":42,"value":"BIG RIVER"}],"songType":[{"id":44,"value":"cover"}],"performances":[{"id":43,"value":397}]}}
+{"id":16,"label":"song","inE":{"followedBy":[{"id":7008,"outV":89,"properties":{"weight":1}},{"id":6467,"outV":187,"properties":{"weight":1}},{"id":4101,"outV":48,"properties":{"weight":1}},{"id":5637,"outV":22,"properties":{"weight":3}},{"id":6341,"outV":21,"properties":{"weight":1}},{"id":5382,"outV":69,"properties":{"weight":4}},{"id":3273,"outV":160,"properties":{"weight":2}},{"id":6537,"outV":55,"properties":{"weight":1}},{"id":3882,"outV":51,"properties":{"weight":12}},{"id":12,"outV":9,"properties":{"weight":1}},{"id":1260,"outV":27,"properties":{"weight":1}},{"id":4172,"outV":54,"properties":{"weight":1}},{"id":6285,"outV":49,"properties":{"weight":1}},{"id":368,"outV":74,"properties":{"weight":1}},{"id":4464,"outV":202,"properties":{"weight":1}},{"id":468,"outV":195,"properties":{"weight":3}},{"id":5303,"outV":170,"properties":{"weight":2}},{"id":472,"outV":98,"properties":{"weight":2}},{"id":2521,"outV":57,"properties":{"weight":1}},{"id":5081,"outV":4,"properties":{"weigh
 t":2}},{"id":5146,"outV":125,"properties":{"weight":1}},{"id":1405,"outV":83,"properties":{"weight":5}},{"id":1854,"outV":94,"properties":{"weight":2}},{"id":1950,"outV":148,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":2169,"inV":25,"properties":{"weight":1}},{"id":2170,"inV":101,"properties":{"weight":46}},{"id":2171,"inV":89,"properties":{"weight":2}},{"id":2172,"inV":130,"properties":{"weight":1}},{"id":2173,"inV":83,"properties":{"weight":1}}]},"properties":{"name":[{"id":45,"value":"WEATHER REPORT SUITE"}],"songType":[{"id":47,"value":""}],"performances":[{"id":46,"value":0}]}}
+{"id":17,"label":"song","inE":{"followedBy":[{"id":5955,"outV":50,"properties":{"weight":43}},{"id":5702,"outV":20,"properties":{"weight":2}},{"id":2696,"outV":13,"properties":{"weight":2}},{"id":6538,"outV":55,"properties":{"weight":1}},{"id":1163,"outV":26,"properties":{"weight":34}},{"id":13,"outV":9,"properties":{"weight":1}},{"id":402,"outV":38,"properties":{"weight":12}},{"id":5011,"outV":30,"properties":{"weight":3}},{"id":6675,"outV":12,"properties":{"weight":3}},{"id":1877,"outV":103,"properties":{"weight":2}},{"id":2522,"outV":57,"properties":{"weight":1}},{"id":475,"outV":98,"properties":{"weight":1}},{"id":3803,"outV":88,"properties":{"weight":4}},{"id":540,"outV":120,"properties":{"weight":1}},{"id":2588,"outV":112,"properties":{"weight":3}},{"id":3996,"outV":106,"properties":{"weight":1}},{"id":990,"outV":11,"properties":{"weight":3}},{"id":1570,"outV":18,"properties":{"weight":6}},{"id":2275,"outV":25,"properties":{"weight":1}},{"id":4262,"outV":10,"properties":{"weig
 ht":5}},{"id":2795,"outV":15,"properties":{"weight":10}},{"id":6955,"outV":84,"properties":{"weight":1}},{"id":2413,"outV":68,"properties":{"weight":9}},{"id":4077,"outV":109,"properties":{"weight":1}},{"id":2991,"outV":14,"properties":{"weight":13}},{"id":4912,"outV":100,"properties":{"weight":1}},{"id":3639,"outV":24,"properties":{"weight":13}},{"id":6583,"outV":116,"properties":{"weight":1}},{"id":58,"outV":46,"properties":{"weight":2}},{"id":635,"outV":23,"properties":{"weight":16}},{"id":5244,"outV":32,"properties":{"weight":19}},{"id":2942,"outV":78,"properties":{"weight":1}},{"id":6847,"outV":64,"properties":{"weight":7}}]},"outE":{"followedBy":[{"id":2112,"inV":24,"properties":{"weight":9}},{"id":2113,"inV":21,"properties":{"weight":1}},{"id":2114,"inV":46,"properties":{"weight":1}},{"id":2115,"inV":20,"properties":{"weight":2}},{"id":2116,"inV":10,"properties":{"weight":7}},{"id":2117,"inV":68,"properties":{"weight":25}},{"id":2118,"inV":32,"properties":{"weight":19}},{"id"
 :2119,"inV":103,"properties":{"weight":3}},{"id":2120,"inV":121,"properties":{"weight":3}},{"id":2121,"inV":112,"properties":{"weight":31}},{"id":2122,"inV":85,"properties":{"weight":1}},{"id":2123,"inV":101,"properties":{"weight":1}},{"id":2124,"inV":109,"properties":{"weight":1}},{"id":2125,"inV":73,"properties":{"weight":1}},{"id":2126,"inV":88,"properties":{"weight":8}},{"id":2127,"inV":111,"properties":{"weight":3}},{"id":2128,"inV":54,"properties":{"weight":2}},{"id":2129,"inV":97,"properties":{"weight":2}},{"id":2130,"inV":100,"properties":{"weight":1}},{"id":2131,"inV":42,"properties":{"weight":1}},{"id":2132,"inV":58,"properties":{"weight":2}},{"id":2133,"inV":244,"properties":{"weight":1}},{"id":2134,"inV":56,"properties":{"weight":1}},{"id":2135,"inV":63,"properties":{"weight":1}},{"id":2136,"inV":188,"properties":{"weight":2}},{"id":2137,"inV":71,"properties":{"weight":1}},{"id":2138,"inV":30,"properties":{"weight":2}},{"id":2139,"inV":31,"properties":{"weight":1}},{"id"
 :2140,"inV":77,"properties":{"weight":2}},{"id":2141,"inV":40,"properties":{"weight":1}},{"id":2142,"inV":33,"properties":{"weight":1}},{"id":2103,"inV":18,"properties":{"weight":17}},{"id":2104,"inV":39,"properties":{"weight":2}},{"id":2105,"inV":22,"properties":{"weight":4}},{"id":2106,"inV":50,"properties":{"weight":6}},{"id":2107,"inV":14,"properties":{"weight":19}},{"id":2108,"inV":15,"properties":{"weight":8}},{"id":2109,"inV":12,"properties":{"weight":24}},{"id":2110,"inV":23,"properties":{"weight":2}},{"id":2111,"inV":13,"properties":{"weight":4}}],"sungBy":[{"id":7364,"inV":340}],"writtenBy":[{"id":7363,"inV":339}]},"properties":{"name":[{"id":48,"value":"THEY LOVE EACH OTHER"}],"songType":[{"id":50,"value":"original"}],"performances":[{"id":49,"value":227}]}}
+{"id":18,"label":"song","inE":{"followedBy":[{"id":1024,"outV":73,"properties":{"weight":4}},{"id":4097,"outV":48,"properties":{"weight":13}},{"id":6276,"outV":49,"properties":{"weight":2}},{"id":2309,"outV":25,"properties":{"weight":1}},{"id":3333,"outV":155,"properties":{"weight":1}},{"id":4231,"outV":52,"properties":{"weight":1}},{"id":4360,"outV":62,"properties":{"weight":1}},{"id":3849,"outV":60,"properties":{"weight":1}},{"id":5257,"outV":32,"properties":{"weight":3}},{"id":5385,"outV":69,"properties":{"weight":2}},{"id":2189,"outV":235,"properties":{"weight":1}},{"id":14,"outV":9,"properties":{"weight":5}},{"id":654,"outV":23,"properties":{"weight":1}},{"id":5010,"outV":30,"properties":{"weight":2}},{"id":6546,"outV":55,"properties":{"weight":1}},{"id":4885,"outV":100,"properties":{"weight":11}},{"id":1814,"outV":273,"properties":{"weight":1}},{"id":1943,"outV":148,"properties":{"weight":1}},{"id":5145,"outV":125,"properties":{"weight":1}},{"id":6688,"outV":12,"properties":{"
 weight":1}},{"id":4642,"outV":154,"properties":{"weight":3}},{"id":2852,"outV":101,"properties":{"weight":1}},{"id":4260,"outV":10,"properties":{"weight":3}},{"id":3238,"outV":63,"properties":{"weight":1}},{"id":6695,"outV":141,"properties":{"weight":1}},{"id":3880,"outV":51,"properties":{"weight":12}},{"id":425,"outV":38,"properties":{"weight":2}},{"id":1193,"outV":26,"properties":{"weight":1}},{"id":2601,"outV":112,"properties":{"weight":1}},{"id":4524,"outV":105,"properties":{"weight":3}},{"id":45,"outV":46,"properties":{"weight":3}},{"id":4015,"outV":292,"properties":{"weight":1}},{"id":560,"outV":120,"properties":{"weight":1}},{"id":5299,"outV":170,"properties":{"weight":3}},{"id":6579,"outV":116,"properties":{"weight":1}},{"id":1716,"outV":82,"properties":{"weight":3}},{"id":4404,"outV":40,"properties":{"weight":1}},{"id":5429,"outV":315,"properties":{"weight":1}},{"id":4150,"outV":218,"properties":{"weight":1}},{"id":2103,"outV":17,"properties":{"weight":17}},{"id":4152,"outV
 ":54,"properties":{"weight":18}},{"id":6456,"outV":187,"properties":{"weight":8}},{"id":1849,"outV":94,"properties":{"weight":6}},{"id":827,"outV":171,"properties":{"weight":1}},{"id":6715,"outV":53,"properties":{"weight":6}},{"id":6205,"outV":319,"properties":{"weight":1}},{"id":1086,"outV":59,"properties":{"weight":21}},{"id":5439,"outV":239,"properties":{"weight":1}},{"id":6080,"outV":72,"properties":{"weight":3}},{"id":1986,"outV":152,"properties":{"weight":1}},{"id":3270,"outV":160,"properties":{"weight":1}},{"id":5192,"outV":99,"properties":{"weight":1}},{"id":3017,"outV":14,"properties":{"weight":1}},{"id":1356,"outV":31,"properties":{"weight":1}},{"id":3148,"outV":104,"properties":{"weight":19}},{"id":4044,"outV":173,"properties":{"weight":4}},{"id":5073,"outV":4,"properties":{"weight":4}},{"id":4692,"outV":33,"properties":{"weight":1}},{"id":5716,"outV":20,"properties":{"weight":1}},{"id":2517,"outV":57,"properties":{"weight":11}},{"id":5973,"outV":50,"properties":{"weight"
 :5}},{"id":3671,"outV":24,"properties":{"weight":3}},{"id":473,"outV":98,"properties":{"weight":6}},{"id":729,"outV":80,"properties":{"weight":5}},{"id":5850,"outV":61,"properties":{"weight":1}},{"id":1244,"outV":27,"properties":{"weight":16}},{"id":3807,"outV":88,"properties":{"weight":1}},{"id":3553,"outV":56,"properties":{"weight":16}},{"id":866,"outV":189,"properties":{"weight":1}},{"id":5602,"outV":42,"properties":{"weight":1}},{"id":355,"outV":74,"properties":{"weight":1}},{"id":3431,"outV":58,"properties":{"weight":8}},{"id":4967,"outV":207,"properties":{"weight":1}},{"id":7016,"outV":89,"properties":{"weight":3}},{"id":1642,"outV":213,"properties":{"weight":1}},{"id":2029,"outV":180,"properties":{"weight":1}},{"id":6765,"outV":39,"properties":{"weight":7}},{"id":6384,"outV":65,"properties":{"weight":1}},{"id":2802,"outV":15,"properties":{"weight":1}},{"id":3315,"outV":252,"properties":{"weight":1}},{"id":4851,"outV":119,"properties":{"weight":1}},{"id":3064,"outV":153,"prope
 rties":{"weight":2}},{"id":1401,"outV":190,"properties":{"weight":2}},{"id":2683,"outV":13,"properties":{"weight":3}},{"id":4476,"outV":202,"properties":{"weight":3}},{"id":2431,"outV":68,"properties":{"weight":3}}]},"outE":{"followedBy":[{"id":1536,"inV":59,"properties":{"weight":5}},{"id":1537,"inV":19,"properties":{"weight":17}},{"id":1538,"inV":100,"properties":{"weight":16}},{"id":1539,"inV":122,"properties":{"weight":6}},{"id":1540,"inV":46,"properties":{"weight":4}},{"id":1541,"inV":47,"properties":{"weight":1}},{"id":1542,"inV":74,"properties":{"weight":1}},{"id":1543,"inV":53,"properties":{"weight":7}},{"id":1544,"inV":94,"properties":{"weight":2}},{"id":1545,"inV":58,"properties":{"weight":13}},{"id":1546,"inV":57,"properties":{"weight":10}},{"id":1547,"inV":25,"properties":{"weight":1}},{"id":1548,"inV":39,"properties":{"weight":3}},{"id":1549,"inV":54,"properties":{"weight":29}},{"id":1550,"inV":120,"properties":{"weight":1}},{"id":1551,"inV":152,"properties":{"weight":1
 }},{"id":1552,"inV":89,"properties":{"weight":3}},{"id":1553,"inV":148,"properties":{"weight":1}},{"id":1554,"inV":252,"properties":{"weight":1}},{"id":1555,"inV":225,"properties":{"weight":1}},{"id":1556,"inV":80,"properties":{"weight":2}},{"id":1557,"inV":56,"properties":{"weight":11}},{"id":1558,"inV":27,"properties":{"weight":16}},{"id":1559,"inV":26,"properties":{"weight":1}},{"id":1560,"inV":206,"properties":{"weight":1}},{"id":1561,"inV":72,"properties":{"weight":5}},{"id":1562,"inV":23,"properties":{"weight":3}},{"id":1563,"inV":49,"properties":{"weight":3}},{"id":1564,"inV":51,"properties":{"weight":26}},{"id":1565,"inV":55,"properties":{"weight":2}},{"id":1566,"inV":202,"properties":{"weight":6}},{"id":1567,"inV":13,"properties":{"weight":3}},{"id":1568,"inV":83,"properties":{"weight":4}},{"id":1569,"inV":160,"properties":{"weight":2}},{"id":1570,"inV":17,"properties":{"weight":6}},{"id":1571,"inV":10,"properties":{"weight":5}},{"id":1572,"inV":9,"properties":{"weight":3}}
 ,{"id":1573,"inV":125,"properties":{"weight":2}},{"id":1574,"inV":98,"properties":{"weight":4}},{"id":1575,"inV":170,"properties":{"weight":5}},{"id":1576,"inV":69,"properties":{"weight":3}},{"id":1577,"inV":21,"properties":{"weight":1}},{"id":1578,"inV":82,"properties":{"weight":2}},{"id":1579,"inV":196,"properties":{"weight":1}},{"id":1580,"inV":104,"properties":{"weight":9}},{"id":1581,"inV":108,"properties":{"weight":4}},{"id":1582,"inV":14,"properties":{"weight":4}},{"id":1583,"inV":32,"properties":{"weight":4}},{"id":1584,"inV":50,"properties":{"weight":1}},{"id":1585,"inV":48,"properties":{"weight":7}},{"id":1586,"inV":101,"properties":{"weight":1}},{"id":1587,"inV":105,"properties":{"weight":5}},{"id":1588,"inV":208,"properties":{"weight":1}},{"id":1589,"inV":103,"properties":{"weight":2}},{"id":1590,"inV":42,"properties":{"weight":1}},{"id":1591,"inV":63,"properties":{"weight":2}},{"id":1592,"inV":24,"properties":{"weight":2}},{"id":1593,"inV":73,"properties":{"weight":7}},
 {"id":1594,"inV":222,"properties":{"weight":1}},{"id":1595,"inV":106,"properties":{"weight":1}},{"id":1596,"inV":189,"properties":{"weight":2}},{"id":1597,"inV":112,"properties":{"weight":1}},{"id":1598,"inV":68,"properties":{"weight":2}},{"id":1599,"inV":121,"properties":{"weight":1}},{"id":1600,"inV":180,"properties":{"weight":2}},{"id":1601,"inV":199,"properties":{"weight":1}},{"id":1602,"inV":88,"properties":{"weight":2}},{"id":1603,"inV":128,"properties":{"weight":1}},{"id":1604,"inV":60,"properties":{"weight":1}},{"id":1605,"inV":12,"properties":{"weight":1}},{"id":1606,"inV":75,"properties":{"weight":2}},{"id":1607,"inV":168,"properties":{"weight":1}},{"id":1608,"inV":175,"properties":{"weight":1}},{"id":1609,"inV":254,"properties":{"weight":1}},{"id":1610,"inV":174,"properties":{"weight":4}},{"id":1611,"inV":137,"properties":{"weight":1}},{"id":1612,"inV":173,"properties":{"weight":1}},{"id":1535,"inV":235,"properties":{"weight":1}}],"sungBy":[{"id":7554,"inV":351}],"written
 By":[{"id":7553,"inV":528}]},"properties":{"name":[{"id":51,"value":"EL PASO"}],"songType":[{"id":53,"value":"cover"}],"performances":[{"id":52,"value":388}]}}
+{"id":19,"label":"song","inE":{"followedBy":[{"id":1537,"outV":18,"properties":{"weight":17}},{"id":3969,"outV":106,"properties":{"weight":1}},{"id":6657,"outV":12,"properties":{"weight":3}},{"id":4098,"outV":48,"properties":{"weight":1}},{"id":6532,"outV":242,"properties":{"weight":1}},{"id":1159,"outV":26,"properties":{"weight":21}},{"id":6152,"outV":36,"properties":{"weight":6}},{"id":394,"outV":74,"properties":{"weight":1}},{"id":522,"outV":120,"properties":{"weight":2}},{"id":5130,"outV":222,"properties":{"weight":1}},{"id":3467,"outV":58,"properties":{"weight":8}},{"id":15,"outV":9,"properties":{"weight":1}},{"id":272,"outV":150,"properties":{"weight":1}},{"id":4880,"outV":100,"properties":{"weight":1}},{"id":5267,"outV":32,"properties":{"weight":12}},{"id":4245,"outV":10,"properties":{"weight":9}},{"id":790,"outV":122,"properties":{"weight":1}},{"id":2841,"outV":101,"properties":{"weight":18}},{"id":3097,"outV":153,"properties":{"weight":3}},{"id":411,"outV":38,"properties":{
 "weight":6}},{"id":2335,"outV":290,"properties":{"weight":2}},{"id":5535,"outV":43,"properties":{"weight":1}},{"id":1825,"outV":41,"properties":{"weight":1}},{"id":3874,"outV":60,"properties":{"weight":1}},{"id":4770,"outV":114,"properties":{"weight":4}},{"id":6308,"outV":123,"properties":{"weight":1}},{"id":2086,"outV":188,"properties":{"weight":1}},{"id":2215,"outV":75,"properties":{"weight":1}},{"id":5801,"outV":76,"properties":{"weight":5}},{"id":42,"outV":46,"properties":{"weight":5}},{"id":3628,"outV":24,"properties":{"weight":9}},{"id":2989,"outV":14,"properties":{"weight":17}},{"id":5167,"outV":71,"properties":{"weight":1}},{"id":6831,"outV":64,"properties":{"weight":7}},{"id":2354,"outV":87,"properties":{"weight":2}},{"id":5938,"outV":50,"properties":{"weight":19}},{"id":951,"outV":67,"properties":{"weight":2}},{"id":3511,"outV":223,"properties":{"weight":1}},{"id":1848,"outV":94,"properties":{"weight":1}},{"id":314,"outV":34,"properties":{"weight":2}},{"id":2621,"outV":158
 ,"properties":{"weight":2}},{"id":1472,"outV":81,"properties":{"weight":1}},{"id":6081,"outV":72,"properties":{"weight":24}},{"id":6978,"outV":175,"properties":{"weight":2}},{"id":2755,"outV":15,"properties":{"weight":8}},{"id":5701,"outV":20,"properties":{"weight":4}},{"id":3275,"outV":160,"properties":{"weight":2}},{"id":4171,"outV":54,"properties":{"weight":3}},{"id":206,"outV":70,"properties":{"weight":1}},{"id":4558,"outV":105,"properties":{"weight":1}},{"id":5200,"outV":99,"properties":{"weight":19}},{"id":5457,"outV":79,"properties":{"weight":4}},{"id":979,"outV":11,"properties":{"weight":9}},{"id":1620,"outV":210,"properties":{"weight":4}},{"id":5590,"outV":42,"properties":{"weight":4}},{"id":3799,"outV":88,"properties":{"weight":7}},{"id":4450,"outV":113,"properties":{"weight":1}},{"id":4962,"outV":207,"properties":{"weight":1}},{"id":6370,"outV":21,"properties":{"weight":1}},{"id":1763,"outV":28,"properties":{"weight":1}},{"id":2405,"outV":45,"properties":{"weight":1}},{"i
 d":2279,"outV":25,"properties":{"weight":4}},{"id":2408,"outV":68,"properties":{"weight":5}},{"id":5864,"outV":96,"properties":{"weight":1}},{"id":2666,"outV":13,"properties":{"weight":12}},{"id":1900,"outV":103,"properties":{"weight":22}},{"id":3564,"outV":56,"properties":{"weight":2}},{"id":5102,"outV":4,"properties":{"weight":6}},{"id":1776,"outV":234,"properties":{"weight":7}},{"id":4976,"outV":236,"properties":{"weight":3}},{"id":2546,"outV":57,"properties":{"weight":28}},{"id":627,"outV":23,"properties":{"weight":3}},{"id":4083,"outV":109,"properties":{"weight":4}},{"id":4470,"outV":202,"properties":{"weight":2}},{"id":5622,"outV":22,"properties":{"weight":3}},{"id":6391,"outV":65,"properties":{"weight":2}},{"id":6394,"outV":136,"properties":{"weight":1}},{"id":4349,"outV":62,"properties":{"weight":1}},{"id":126,"outV":97,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":3139,"inV":187,"properties":{"weight":402}},{"id":3140,"inV":39,"properties":{"weight":1}},{"id":314
 1,"inV":60,"properties":{"weight":1}}],"sungBy":[{"id":7100,"inV":340}],"writtenBy":[{"id":7099,"inV":339}]},"properties":{"name":[{"id":54,"value":"CHINA CAT SUNFLOWER"}],"songType":[{"id":56,"value":"original"}],"performances":[{"id":55,"value":554}]}}
+{"id":20,"label":"song","inE":{"followedBy":[{"id":5376,"outV":69,"properties":{"weight":1}},{"id":6592,"outV":116,"properties":{"weight":1}},{"id":2115,"outV":17,"properties":{"weight":2}},{"id":6084,"outV":72,"properties":{"weight":3}},{"id":4170,"outV":54,"properties":{"weight":4}},{"id":2955,"outV":78,"properties":{"weight":1}},{"id":1100,"outV":59,"properties":{"weight":5}},{"id":1164,"outV":26,"properties":{"weight":1}},{"id":2061,"outV":92,"properties":{"weight":1}},{"id":718,"outV":80,"properties":{"weight":2}},{"id":6543,"outV":55,"properties":{"weight":1}},{"id":6735,"outV":53,"properties":{"weight":1}},{"id":16,"outV":9,"properties":{"weight":1}},{"id":1809,"outV":199,"properties":{"weight":1}},{"id":3282,"outV":160,"properties":{"weight":1}},{"id":3609,"outV":56,"properties":{"weight":1}},{"id":1818,"outV":273,"properties":{"weight":1}},{"id":4894,"outV":100,"properties":{"weight":1}},{"id":479,"outV":98,"properties":{"weight":3}},{"id":2527,"outV":57,"properties":{"weig
 ht":3}},{"id":2027,"outV":180,"properties":{"weight":3}},{"id":3883,"outV":51,"properties":{"weight":4}},{"id":2287,"outV":25,"properties":{"weight":1}},{"id":4783,"outV":114,"properties":{"weight":1}},{"id":3442,"outV":58,"properties":{"weight":2}},{"id":4340,"outV":62,"properties":{"weight":1}},{"id":5300,"outV":170,"properties":{"weight":1}},{"id":5047,"outV":209,"properties":{"weight":1}},{"id":56,"outV":46,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":5699,"inV":51,"properties":{"weight":6}},{"id":5700,"inV":100,"properties":{"weight":4}},{"id":5701,"inV":19,"properties":{"weight":4}},{"id":5702,"inV":17,"properties":{"weight":2}},{"id":5703,"inV":56,"properties":{"weight":2}},{"id":5704,"inV":39,"properties":{"weight":1}},{"id":5705,"inV":52,"properties":{"weight":1}},{"id":5706,"inV":94,"properties":{"weight":1}},{"id":5707,"inV":58,"properties":{"weight":3}},{"id":5708,"inV":59,"properties":{"weight":3}},{"id":5709,"inV":14,"properties":{"weight":1}},{"id":5710,"i
 nV":55,"properties":{"weight":1}},{"id":5711,"inV":47,"properties":{"weight":1}},{"id":5712,"inV":27,"properties":{"weight":1}},{"id":5713,"inV":82,"properties":{"weight":1}},{"id":5714,"inV":83,"properties":{"weight":1}},{"id":5715,"inV":98,"properties":{"weight":2}},{"id":5716,"inV":18,"properties":{"weight":1}},{"id":5717,"inV":170,"properties":{"weight":2}},{"id":5718,"inV":180,"properties":{"weight":1}},{"id":5719,"inV":273,"properties":{"weight":2}},{"id":5720,"inV":199,"properties":{"weight":1}},{"id":5721,"inV":73,"properties":{"weight":1}},{"id":5722,"inV":197,"properties":{"weight":1}},{"id":5723,"inV":222,"properties":{"weight":1}},{"id":5724,"inV":104,"properties":{"weight":1}},{"id":5725,"inV":118,"properties":{"weight":1}},{"id":5726,"inV":215,"properties":{"weight":1}},{"id":5727,"inV":80,"properties":{"weight":1}},{"id":5728,"inV":173,"properties":{"weight":1}}],"sungBy":[{"id":7854,"inV":351}],"writtenBy":[{"id":7853,"inV":699}]},"properties":{"name":[{"id":57,"valu
 e":"THE RACE IS ON"}],"songType":[{"id":59,"value":"cover"}],"performances":[{"id":58,"value":59}]}}
+{"id":21,"label":"song","inE":{"followedBy":[{"id":5634,"outV":22,"properties":{"weight":3}},{"id":5384,"outV":69,"properties":{"weight":20}},{"id":777,"outV":122,"properties":{"weight":7}},{"id":907,"outV":174,"properties":{"weight":1}},{"id":3981,"outV":106,"properties":{"weight":1}},{"id":6413,"outV":134,"properties":{"weight":18}},{"id":3088,"outV":153,"properties":{"weight":1}},{"id":17,"outV":9,"properties":{"weight":1}},{"id":5137,"outV":125,"properties":{"weight":6}},{"id":4754,"outV":37,"properties":{"weight":6}},{"id":1427,"outV":83,"properties":{"weight":1}},{"id":3859,"outV":60,"properties":{"weight":12}},{"id":4888,"outV":100,"properties":{"weight":1}},{"id":6555,"outV":172,"properties":{"weight":2}},{"id":1949,"outV":148,"properties":{"weight":6}},{"id":3234,"outV":63,"properties":{"weight":1}},{"id":6179,"outV":36,"properties":{"weight":1}},{"id":932,"outV":91,"properties":{"weight":1}},{"id":2471,"outV":68,"properties":{"weight":1}},{"id":4519,"outV":105,"properties"
 :{"weight":1}},{"id":4775,"outV":114,"properties":{"weight":5}},{"id":1577,"outV":18,"properties":{"weight":1}},{"id":4650,"outV":154,"properties":{"weight":2}},{"id":5035,"outV":47,"properties":{"weight":1}},{"id":44,"outV":46,"properties":{"weight":2}},{"id":1711,"outV":82,"properties":{"weight":2}},{"id":816,"outV":171,"properties":{"weight":11}},{"id":5680,"outV":167,"properties":{"weight":1}},{"id":945,"outV":67,"properties":{"weight":2}},{"id":3633,"outV":24,"properties":{"weight":1}},{"id":6705,"outV":141,"properties":{"weight":2}},{"id":6450,"outV":187,"properties":{"weight":8}},{"id":6195,"outV":232,"properties":{"weight":2}},{"id":1845,"outV":94,"properties":{"weight":8}},{"id":3896,"outV":51,"properties":{"weight":1}},{"id":5305,"outV":170,"properties":{"weight":1}},{"id":6202,"outV":319,"properties":{"weight":3}},{"id":1981,"outV":281,"properties":{"weight":1}},{"id":4030,"outV":173,"properties":{"weight":2}},{"id":3263,"outV":160,"properties":{"weight":4}},{"id":1089,"o
 utV":59,"properties":{"weight":4}},{"id":2113,"outV":17,"properties":{"weight":1}},{"id":6722,"outV":53,"properties":{"weight":1}},{"id":2371,"outV":87,"properties":{"weight":2}},{"id":2500,"outV":90,"properties":{"weight":1}},{"id":5060,"outV":257,"properties":{"weight":1}},{"id":5957,"outV":50,"properties":{"weight":2}},{"id":6981,"outV":175,"properties":{"weight":5}},{"id":4166,"outV":54,"properties":{"weight":6}},{"id":713,"outV":80,"properties":{"weight":1}},{"id":3789,"outV":168,"properties":{"weight":1}},{"id":6605,"outV":127,"properties":{"weight":1}},{"id":5070,"outV":128,"properties":{"weight":1}},{"id":2512,"outV":57,"properties":{"weight":3}},{"id":2896,"outV":101,"properties":{"weight":1}},{"id":467,"outV":194,"properties":{"weight":1}},{"id":2645,"outV":137,"properties":{"weight":3}},{"id":470,"outV":195,"properties":{"weight":1}},{"id":1240,"outV":183,"properties":{"weight":1}},{"id":1368,"outV":130,"properties":{"weight":10}},{"id":1752,"outV":28,"properties":{"weigh
 t":8}},{"id":2904,"outV":118,"properties":{"weight":1}},{"id":6105,"outV":72,"properties":{"weight":1}},{"id":1242,"outV":27,"properties":{"weight":5}},{"id":5212,"outV":99,"properties":{"weight":1}},{"id":3038,"outV":14,"properties":{"weight":1}},{"id":2271,"outV":25,"properties":{"weight":4}},{"id":5855,"outV":61,"properties":{"weight":1}},{"id":2016,"outV":149,"properties":{"weight":8}},{"id":4451,"outV":113,"properties":{"weight":1}},{"id":484,"outV":98,"properties":{"weight":2}},{"id":2788,"outV":15,"properties":{"weight":1}},{"id":3433,"outV":58,"properties":{"weight":3}},{"id":5738,"outV":129,"properties":{"weight":2}},{"id":5866,"outV":96,"properties":{"weight":96}},{"id":4588,"outV":85,"properties":{"weight":5}},{"id":238,"outV":145,"properties":{"weight":1}},{"id":2670,"outV":13,"properties":{"weight":4}},{"id":4462,"outV":202,"properties":{"weight":2}},{"id":7022,"outV":89,"properties":{"weight":1}},{"id":5359,"outV":132,"properties":{"weight":2}},{"id":6768,"outV":39,"pr
 operties":{"weight":2}},{"id":2162,"outV":151,"properties":{"weight":1}},{"id":3190,"outV":104,"properties":{"weight":1}},{"id":2040,"outV":92,"properties":{"weight":2}},{"id":3705,"outV":3,"properties":{"weight":2}},{"id":3322,"outV":252,"properties":{"weight":1}},{"id":5114,"outV":4,"properties":{"weight":1}},{"id":4347,"outV":62,"properties":{"weight":3}},{"id":4859,"outV":35,"properties":{"weight":4}},{"id":1148,"outV":26,"properties":{"weight":3}},{"id":6268,"outV":49,"properties":{"weight":51}},{"id":637,"outV":23,"properties":{"weight":3}},{"id":382,"outV":74,"properties":{"weight":4}}]},"outE":{"followedBy":[{"id":6319,"inV":59,"properties":{"weight":3}},{"id":6320,"inV":96,"properties":{"weight":72}},{"id":6321,"inV":319,"properties":{"weight":24}},{"id":6322,"inV":148,"properties":{"weight":48}},{"id":6323,"inV":25,"properties":{"weight":7}},{"id":6324,"inV":27,"properties":{"weight":3}},{"id":6325,"inV":252,"properties":{"weight":2}},{"id":6326,"inV":145,"properties":{"we
 ight":2}},{"id":6327,"inV":89,"properties":{"weight":3}},{"id

<TRUNCATED>

[14/19] tinkerpop git commit: TINKERPOP-1274: GraphSON 2.0.

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/data/grateful-dead-v2d0-typed.json
----------------------------------------------------------------------
diff --git a/data/grateful-dead-v2d0-typed.json b/data/grateful-dead-v2d0-typed.json
new file mode 100644
index 0000000..3b24d37
--- /dev/null
+++ b/data/grateful-dead-v2d0-typed.json
@@ -0,0 +1,808 @@
+{"id":{"@type":"gremlin:int32","@value":1},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":3059},"outV":{"@type":"gremlin:int32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":276},"outV":{"@type":"gremlin:int32","@value":5},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3704},"outV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":4383},"outV":{"@type":"gremlin:int32","@value":62},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":0},"inV":{"@type":"gremlin:int32","@value":2},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1},"inV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:int32","@
 value":2}}},{"id":{"@type":"gremlin:int32","@value":2},"inV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3},"inV":{"@type":"gremlin:int32","@value":5},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4},"inV":{"@type":"gremlin:int32","@value":6},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}],"sungBy":[{"id":{"@type":"gremlin:int32","@value":7612},"inV":{"@type":"gremlin:int32","@value":340}}],"writtenBy":[{"id":{"@type":"gremlin:int32","@value":7611},"inV":{"@type":"gremlin:int32","@value":527}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":0},"value":"HEY BO DIDDLEY"}],"songType":[{"id":{"@type":"gremlin:int64","@value":2},"value":"cover"}],"performances":[{"id":{"@type":"gremlin:int64","@value":1},"value":{"@type":"gremlin:int32","@value":5}}]}}
+{"id":{"@type":"gremlin:int32","@value":2},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":0},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":323},"outV":{"@type":"gremlin:int32","@value":34},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":6190},"inV":{"@type":"gremlin:int32","@value":123},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6191},"inV":{"@type":"gremlin:int32","@value":50},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}],"sungBy":[{"id":{"@type":"gremlin:int32","@value":7666},"inV":{"@type":"gremlin:int32","@value":525}}],"writtenBy":[{"id":{"@type":"gremlin:int32","@value":7665},"inV":{"@type":"gremlin:int32","@value":525}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":3},"value":"IM 
 A MAN"}],"songType":[{"id":{"@type":"gremlin:int64","@value":5},"value":"cover"}],"performances":[{"id":{"@type":"gremlin:int64","@value":4},"value":{"@type":"gremlin:int32","@value":1}}]}}
+{"id":{"@type":"gremlin:int32","@value":3},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":1},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":2051},"outV":{"@type":"gremlin:int32","@value":92},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":1412},"outV":{"@type":"gremlin:int32","@value":83},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":6669},"outV":{"@type":"gremlin:int32","@value":12},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":526},"outV":{"@type":"gremlin:int32","@value":120},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":910},"outV":{"@type":"gremlin:int32","@value":91},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id"
 :{"@type":"gremlin:int32","@value":1166},"outV":{"@type":"gremlin:int32","@value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":6286},"outV":{"@type":"gremlin:int32","@value":49},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":273},"outV":{"@type":"gremlin:int32","@value":5},"properties":{"weight":{"@type":"gremlin:int32","@value":40}}},{"id":{"@type":"gremlin:int32","@value":2194},"outV":{"@type":"gremlin:int32","@value":235},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1684},"outV":{"@type":"gremlin:int32","@value":124},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1941},"outV":{"@type":"gremlin:int32","@value":148},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3221},"outV":{"@type":"gremlin:int32","@va
 lue":63},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2712},"outV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":6425},"outV":{"@type":"gremlin:int32","@value":134},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5787},"outV":{"@type":"gremlin:int32","@value":76},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5148},"outV":{"@type":"gremlin:int32","@value":125},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":6692},"outV":{"@type":"gremlin:int32","@value":141},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6310},"outV":{"@type":"gremlin:int32","@value":123},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id
 ":{"@type":"gremlin:int32","@value":6448},"outV":{"@type":"gremlin:int32","@value":187},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":2225},"outV":{"@type":"gremlin:int32","@value":226},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5042},"outV":{"@type":"gremlin:int32","@value":209},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4789},"outV":{"@type":"gremlin:int32","@value":114},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":1464},"outV":{"@type":"gremlin:int32","@value":81},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2232},"outV":{"@type":"gremlin:int32","@value":215},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4665},"outV":{"@type":"gremlin:int32",
 "@value":154},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2235},"outV":{"@type":"gremlin:int32","@value":29},"properties":{"weight":{"@type":"gremlin:int32","@value":163}}},{"id":{"@type":"gremlin:int32","@value":6208},"outV":{"@type":"gremlin:int32","@value":319},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":706},"outV":{"@type":"gremlin:int32","@value":206},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":835},"outV":{"@type":"gremlin:int32","@value":171},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5188},"outV":{"@type":"gremlin:int32","@value":99},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1862},"outV":{"@type":"gremlin:int32","@value":94},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}}
 ,{"id":{"@type":"gremlin:int32","@value":1735},"outV":{"@type":"gremlin:int32","@value":82},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6343},"outV":{"@type":"gremlin:int32","@value":21},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4937},"outV":{"@type":"gremlin:int32","@value":277},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3276},"outV":{"@type":"gremlin:int32","@value":160},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3149},"outV":{"@type":"gremlin:int32","@value":104},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1358},"outV":{"@type":"gremlin:int32","@value":130},"properties":{"weight":{"@type":"gremlin:int32","@value":18}}},{"id":{"@type":"gremlin:int32","@value":4304},"outV":{"@type":"gremlin:in
 t32","@value":110},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1105},"outV":{"@type":"gremlin:int32","@value":59},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":722},"outV":{"@type":"gremlin:int32","@value":80},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4182},"outV":{"@type":"gremlin:int32","@value":54},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1499},"outV":{"@type":"gremlin:int32","@value":164},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":2397},"outV":{"@type":"gremlin:int32","@value":179},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":351},"outV":{"@type":"gremlin:int32","@value":178},"properties":{"weight":{"@type":"gremlin:int32","@value":1}
 }},{"id":{"@type":"gremlin:int32","@value":6623},"outV":{"@type":"gremlin:int32","@value":127},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":2018},"outV":{"@type":"gremlin:int32","@value":149},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":7011},"outV":{"@type":"gremlin:int32","@value":89},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5348},"outV":{"@type":"gremlin:int32","@value":165},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2278},"outV":{"@type":"gremlin:int32","@value":25},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":1255},"outV":{"@type":"gremlin:int32","@value":27},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3048},"outV":{"@type":"gremlin:in
 t32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":13}}},{"id":{"@type":"gremlin:int32","@value":5867},"outV":{"@type":"gremlin:int32","@value":96},"properties":{"weight":{"@type":"gremlin:int32","@value":116}}},{"id":{"@type":"gremlin:int32","@value":364},"outV":{"@type":"gremlin:int32","@value":74},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":492},"outV":{"@type":"gremlin:int32","@value":98},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3948},"outV":{"@type":"gremlin:int32","@value":138},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":4335},"outV":{"@type":"gremlin:int32","@value":62},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3312},"outV":{"@type":"gremlin:int32","@value":252},"properties":{"weight":{"@type":"gremlin:int32","@value":
 1}}},{"id":{"@type":"gremlin:int32","@value":5745},"outV":{"@type":"gremlin:int32","@value":129},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4596},"outV":{"@type":"gremlin:int32","@value":85},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5367},"outV":{"@type":"gremlin:int32","@value":132},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":633},"outV":{"@type":"gremlin:int32","@value":23},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":891},"outV":{"@type":"gremlin:int32","@value":140},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5375},"outV":{"@type":"gremlin:int32","@value":69},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6143},"outV":{"@type":"gremlin:in
 t32","@value":289},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":3712},"inV":{"@type":"gremlin:int32","@value":27},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3713},"inV":{"@type":"gremlin:int32","@value":110},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3714},"inV":{"@type":"gremlin:int32","@value":215},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3715},"inV":{"@type":"gremlin:int32","@value":127},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":3716},"inV":{"@type":"gremlin:int32","@value":83},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3717},"inV":{"@type":"gremlin:int32","@value":103},"properties":{"weight":{"@type":"grem
 lin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3718},"inV":{"@type":"gremlin:int32","@value":68},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3719},"inV":{"@type":"gremlin:int32","@value":134},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3720},"inV":{"@type":"gremlin:int32","@value":25},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":3721},"inV":{"@type":"gremlin:int32","@value":125},"properties":{"weight":{"@type":"gremlin:int32","@value":54}}},{"id":{"@type":"gremlin:int32","@value":3722},"inV":{"@type":"gremlin:int32","@value":130},"properties":{"weight":{"@type":"gremlin:int32","@value":26}}},{"id":{"@type":"gremlin:int32","@value":3723},"inV":{"@type":"gremlin:int32","@value":141},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3724},"inV":{
 "@type":"gremlin:int32","@value":145},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3725},"inV":{"@type":"gremlin:int32","@value":319},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3726},"inV":{"@type":"gremlin:int32","@value":12},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3727},"inV":{"@type":"gremlin:int32","@value":160},"properties":{"weight":{"@type":"gremlin:int32","@value":37}}},{"id":{"@type":"gremlin:int32","@value":3728},"inV":{"@type":"gremlin:int32","@value":70},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3729},"inV":{"@type":"gremlin:int32","@value":123},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3730},"inV":{"@type":"gremlin:int32","@value":129},"properties":{"weight":{"@type":"gremlin:i
 nt32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3731},"inV":{"@type":"gremlin:int32","@value":30},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3732},"inV":{"@type":"gremlin:int32","@value":148},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3733},"inV":{"@type":"gremlin:int32","@value":211},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3734},"inV":{"@type":"gremlin:int32","@value":87},"properties":{"weight":{"@type":"gremlin:int32","@value":13}}},{"id":{"@type":"gremlin:int32","@value":3735},"inV":{"@type":"gremlin:int32","@value":164},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3736},"inV":{"@type":"gremlin:int32","@value":64},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3737},"inV":{"@type":
 "gremlin:int32","@value":320},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3738},"inV":{"@type":"gremlin:int32","@value":61},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3739},"inV":{"@type":"gremlin:int32","@value":210},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3740},"inV":{"@type":"gremlin:int32","@value":50},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":3741},"inV":{"@type":"gremlin:int32","@value":128},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3742},"inV":{"@type":"gremlin:int32","@value":315},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3743},"inV":{"@type":"gremlin:int32","@value":261},"properties":{"weight":{"@type":"gremlin:int32","@v
 alue":1}}},{"id":{"@type":"gremlin:int32","@value":3744},"inV":{"@type":"gremlin:int32","@value":213},"properties":{"weight":{"@type":"gremlin:int32","@value":13}}},{"id":{"@type":"gremlin:int32","@value":3745},"inV":{"@type":"gremlin:int32","@value":72},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3746},"inV":{"@type":"gremlin:int32","@value":38},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3747},"inV":{"@type":"gremlin:int32","@value":204},"properties":{"weight":{"@type":"gremlin:int32","@value":14}}},{"id":{"@type":"gremlin:int32","@value":3748},"inV":{"@type":"gremlin:int32","@value":62},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3749},"inV":{"@type":"gremlin:int32","@value":150},"properties":{"weight":{"@type":"gremlin:int32","@value":8}}},{"id":{"@type":"gremlin:int32","@value":3750},"inV":{"@type":"gremlin
 :int32","@value":309},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3751},"inV":{"@type":"gremlin:int32","@value":131},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3752},"inV":{"@type":"gremlin:int32","@value":151},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3753},"inV":{"@type":"gremlin:int32","@value":321},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3754},"inV":{"@type":"gremlin:int32","@value":90},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3755},"inV":{"@type":"gremlin:int32","@value":82},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3756},"inV":{"@type":"gremlin:int32","@value":120},"properties":{"weight":{"@type":"gremlin:int32","@value":1}
 }},{"id":{"@type":"gremlin:int32","@value":3757},"inV":{"@type":"gremlin:int32","@value":46},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":3758},"inV":{"@type":"gremlin:int32","@value":157},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":3759},"inV":{"@type":"gremlin:int32","@value":59},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3760},"inV":{"@type":"gremlin:int32","@value":81},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3761},"inV":{"@type":"gremlin:int32","@value":86},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":3762},"inV":{"@type":"gremlin:int32","@value":140},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3763},"inV":{"@type":"gremlin:int32","@v
 alue":201},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3764},"inV":{"@type":"gremlin:int32","@value":214},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3765},"inV":{"@type":"gremlin:int32","@value":185},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3766},"inV":{"@type":"gremlin:int32","@value":216},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3767},"inV":{"@type":"gremlin:int32","@value":217},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3768},"inV":{"@type":"gremlin:int32","@value":236},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":3769},"inV":{"@type":"gremlin:int32","@value":193},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":
 {"@type":"gremlin:int32","@value":3770},"inV":{"@type":"gremlin:int32","@value":79},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3771},"inV":{"@type":"gremlin:int32","@value":84},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3772},"inV":{"@type":"gremlin:int32","@value":23},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3773},"inV":{"@type":"gremlin:int32","@value":31},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3774},"inV":{"@type":"gremlin:int32","@value":240},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3775},"inV":{"@type":"gremlin:int32","@value":292},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3776},"inV":{"@type":"gremlin:int32","@value":9},
 "properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3777},"inV":{"@type":"gremlin:int32","@value":259},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3694},"inV":{"@type":"gremlin:int32","@value":5},"properties":{"weight":{"@type":"gremlin:int32","@value":57}}},{"id":{"@type":"gremlin:int32","@value":3695},"inV":{"@type":"gremlin:int32","@value":114},"properties":{"weight":{"@type":"gremlin:int32","@value":30}}},{"id":{"@type":"gremlin:int32","@value":3696},"inV":{"@type":"gremlin:int32","@value":74},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3697},"inV":{"@type":"gremlin:int32","@value":78},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3698},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"grem
 lin:int32","@value":3699},"inV":{"@type":"gremlin:int32","@value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3700},"inV":{"@type":"gremlin:int32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":3701},"inV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3702},"inV":{"@type":"gremlin:int32","@value":317},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3703},"inV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":3704},"inV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3705},"inV":{"@type":"gremlin:int32","@value":21},"properties":{"
 weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3706},"inV":{"@type":"gremlin:int32","@value":57},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3707},"inV":{"@type":"gremlin:int32","@value":122},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3708},"inV":{"@type":"gremlin:int32","@value":318},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3709},"inV":{"@type":"gremlin:int32","@value":94},"properties":{"weight":{"@type":"gremlin:int32","@value":26}}},{"id":{"@type":"gremlin:int32","@value":3710},"inV":{"@type":"gremlin:int32","@value":96},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":3711},"inV":{"@type":"gremlin:int32","@value":124},"properties":{"weight":{"@type":"gremlin:int32","@value":15}}}],"sungBy":[{"id":{"@type":"gremli
 n:int32","@value":7808},"inV":{"@type":"gremlin:int32","@value":351}}],"writtenBy":[{"id":{"@type":"gremlin:int32","@value":7807},"inV":{"@type":"gremlin:int32","@value":671}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":6},"value":"NOT FADE AWAY"}],"songType":[{"id":{"@type":"gremlin:int64","@value":8},"value":"cover"}],"performances":[{"id":{"@type":"gremlin:int64","@value":7},"value":{"@type":"gremlin:int32","@value":531}}]}}
+{"id":{"@type":"gremlin:int32","@value":4},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":128},"outV":{"@type":"gremlin:int32","@value":97},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1664},"outV":{"@type":"gremlin:int32","@value":267},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":899},"outV":{"@type":"gremlin:int32","@value":140},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1667},"outV":{"@type":"gremlin:int32","@value":124},"properties":{"weight":{"@type":"gremlin:int32","@value":15}}},{"id":{"@type":"gremlin:int32","@value":4099},"outV":{"@type":"gremlin:int32","@value":48},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"
 id":{"@type":"gremlin:int32","@value":1156},"outV":{"@type":"gremlin:int32","@value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":16}}},{"id":{"@type":"gremlin:int32","@value":773},"outV":{"@type":"gremlin:int32","@value":122},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":6534},"outV":{"@type":"gremlin:int32","@value":242},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1032},"outV":{"@type":"gremlin:int32","@value":73},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6664},"outV":{"@type":"gremlin:int32","@value":12},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5129},"outV":{"@type":"gremlin:int32","@value":222},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5387},"outV":{"@type":"gremlin:int32",
 "@value":69},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5517},"outV":{"@type":"gremlin:int32","@value":43},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5006},"outV":{"@type":"gremlin:int32","@value":30},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6030},"outV":{"@type":"gremlin:int32","@value":204},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":2063},"outV":{"@type":"gremlin:int32","@value":92},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":915},"outV":{"@type":"gremlin:int32","@value":91},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6940},"outV":{"@type":"gremlin:int32","@value":84},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id
 ":{"@type":"gremlin:int32","@value":2464},"outV":{"@type":"gremlin:int32","@value":68},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5795},"outV":{"@type":"gremlin:int32","@value":76},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3620},"outV":{"@type":"gremlin:int32","@value":24},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":4772},"outV":{"@type":"gremlin:int32","@value":114},"properties":{"weight":{"@type":"gremlin:int32","@value":25}}},{"id":{"@type":"gremlin:int32","@value":2982},"outV":{"@type":"gremlin:int32","@value":14},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3367},"outV":{"@type":"gremlin:int32","@value":184},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":2345},"outV":{"@type":"gremlin:int32","@
 value":87},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":2861},"outV":{"@type":"gremlin:int32","@value":101},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":1840},"outV":{"@type":"gremlin:int32","@value":275},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5425},"outV":{"@type":"gremlin:int32","@value":102},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":180},"outV":{"@type":"gremlin:int32","@value":70},"properties":{"weight":{"@type":"gremlin:int32","@value":46}}},{"id":{"@type":"gremlin:int32","@value":2613},"outV":{"@type":"gremlin:int32","@value":158},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5434},"outV":{"@type":"gremlin:int32","@value":217},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{
 "id":{"@type":"gremlin:int32","@value":5562},"outV":{"@type":"gremlin:int32","@value":162},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":1469},"outV":{"@type":"gremlin:int32","@value":81},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":446},"outV":{"@type":"gremlin:int32","@value":38},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":2494},"outV":{"@type":"gremlin:int32","@value":90},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3266},"outV":{"@type":"gremlin:int32","@value":160},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":326},"outV":{"@type":"gremlin:int32","@value":34},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":583},"outV":{"@type":"gremlin:int32","@
 value":120},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6855},"outV":{"@type":"gremlin:int32","@value":64},"properties":{"weight":{"@type":"gremlin:int32","@value":12}}},{"id":{"@type":"gremlin:int32","@value":73},"outV":{"@type":"gremlin:int32","@value":46},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":4425},"outV":{"@type":"gremlin:int32","@value":212},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1613},"outV":{"@type":"gremlin:int32","@value":210},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":4941},"outV":{"@type":"gremlin:int32","@value":86},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6350},"outV":{"@type":"gremlin:int32","@value":21},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id
 ":{"@type":"gremlin:int32","@value":3535},"outV":{"@type":"gremlin:int32","@value":201},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":980},"outV":{"@type":"gremlin:int32","@value":11},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":1494},"outV":{"@type":"gremlin:int32","@value":164},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5206},"outV":{"@type":"gremlin:int32","@value":99},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5847},"outV":{"@type":"gremlin:int32","@value":61},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6490},"outV":{"@type":"gremlin:int32","@value":187},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2781},"outV":{"@type":"gremlin:int32","@v
 alue":15},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":5600},"outV":{"@type":"gremlin:int32","@value":42},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":353},"outV":{"@type":"gremlin:int32","@value":74},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":5474},"outV":{"@type":"gremlin:int32","@value":79},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1891},"outV":{"@type":"gremlin:int32","@value":103},"properties":{"weight":{"@type":"gremlin:int32","@value":19}}},{"id":{"@type":"gremlin:int32","@value":3811},"outV":{"@type":"gremlin:int32","@value":88},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5989},"outV":{"@type":"gremlin:int32","@value":50},"properties":{"weight":{"@type":"gremlin:int32","@value":12}}},{"id"
 :{"@type":"gremlin:int32","@value":4327},"outV":{"@type":"gremlin:int32","@value":110},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":2538},"outV":{"@type":"gremlin:int32","@value":57},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3050},"outV":{"@type":"gremlin:int32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":13}}},{"id":{"@type":"gremlin:int32","@value":4970},"outV":{"@type":"gremlin:int32","@value":236},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2283},"outV":{"@type":"gremlin:int32","@value":25},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":236},"outV":{"@type":"gremlin:int32","@value":145},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6126},"outV":{"@type":"gremlin:int32","@
 value":72},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5232},"outV":{"@type":"gremlin:int32","@value":214},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":4594},"outV":{"@type":"gremlin:int32","@value":85},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1652},"outV":{"@type":"gremlin:int32","@value":213},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":4084},"outV":{"@type":"gremlin:int32","@value":109},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":629},"outV":{"@type":"gremlin:int32","@value":23},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":3701},"outV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id
 ":{"@type":"gremlin:int32","@value":5621},"outV":{"@type":"gremlin:int32","@value":22},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":7029},"outV":{"@type":"gremlin:int32","@value":89},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5238},"outV":{"@type":"gremlin:int32","@value":32},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":2684},"outV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":3325},"outV":{"@type":"gremlin:int32","@value":268},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":5120},"inV":{"@type":"gremlin:int32","@value":40},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":5121},"inV":{"@type
 ":"gremlin:int32","@value":33},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5122},"inV":{"@type":"gremlin:int32","@value":79},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5123},"inV":{"@type":"gremlin:int32","@value":292},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5071},"inV":{"@type":"gremlin:int32","@value":50},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":5072},"inV":{"@type":"gremlin:int32","@value":12},"properties":{"weight":{"@type":"gremlin:int32","@value":26}}},{"id":{"@type":"gremlin:int32","@value":5073},"inV":{"@type":"gremlin:int32","@value":18},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":5074},"inV":{"@type":"gremlin:int32","@value":24},"properties":{"weight":{"@type":"gremlin:int32","@va
 lue":9}}},{"id":{"@type":"gremlin:int32","@value":5075},"inV":{"@type":"gremlin:int32","@value":23},"properties":{"weight":{"@type":"gremlin:int32","@value":63}}},{"id":{"@type":"gremlin:int32","@value":5076},"inV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":12}}},{"id":{"@type":"gremlin:int32","@value":5077},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":5078},"inV":{"@type":"gremlin:int32","@value":11},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5079},"inV":{"@type":"gremlin:int32","@value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":18}}},{"id":{"@type":"gremlin:int32","@value":5080},"inV":{"@type":"gremlin:int32","@value":22},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5081},"inV":{"@type":"gremlin:in
 t32","@value":16},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5082},"inV":{"@type":"gremlin:int32","@value":49},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5083},"inV":{"@type":"gremlin:int32","@value":25},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5084},"inV":{"@type":"gremlin:int32","@value":51},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5085},"inV":{"@type":"gremlin:int32","@value":15},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5086},"inV":{"@type":"gremlin:int32","@value":112},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":5087},"inV":{"@type":"gremlin:int32","@value":121},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"i
 d":{"@type":"gremlin:int32","@value":5088},"inV":{"@type":"gremlin:int32","@value":32},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":5089},"inV":{"@type":"gremlin:int32","@value":68},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5090},"inV":{"@type":"gremlin:int32","@value":120},"properties":{"weight":{"@type":"gremlin:int32","@value":77}}},{"id":{"@type":"gremlin:int32","@value":5091},"inV":{"@type":"gremlin:int32","@value":103},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5092},"inV":{"@type":"gremlin:int32","@value":42},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5093},"inV":{"@type":"gremlin:int32","@value":85},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":5094},"inV":{"@type":"gremlin:int32","@value"
 :76},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":5095},"inV":{"@type":"gremlin:int32","@value":181},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5096},"inV":{"@type":"gremlin:int32","@value":14},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5097},"inV":{"@type":"gremlin:int32","@value":122},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5098},"inV":{"@type":"gremlin:int32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5099},"inV":{"@type":"gremlin:int32","@value":96},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5100},"inV":{"@type":"gremlin:int32","@value":82},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":
 "gremlin:int32","@value":5101},"inV":{"@type":"gremlin:int32","@value":110},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5102},"inV":{"@type":"gremlin:int32","@value":19},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":5103},"inV":{"@type":"gremlin:int32","@value":129},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5104},"inV":{"@type":"gremlin:int32","@value":84},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5105},"inV":{"@type":"gremlin:int32","@value":88},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":5106},"inV":{"@type":"gremlin:int32","@value":97},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5107},"inV":{"@type":"gremlin:int32","@value":114},"proper
 ties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5108},"inV":{"@type":"gremlin:int32","@value":30},"properties":{"weight":{"@type":"gremlin:int32","@value":8}}},{"id":{"@type":"gremlin:int32","@value":5109},"inV":{"@type":"gremlin:int32","@value":31},"properties":{"weight":{"@type":"gremlin:int32","@value":8}}},{"id":{"@type":"gremlin:int32","@value":5110},"inV":{"@type":"gremlin:int32","@value":69},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":5111},"inV":{"@type":"gremlin:int32","@value":127},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5112},"inV":{"@type":"gremlin:int32","@value":60},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5113},"inV":{"@type":"gremlin:int32","@value":39},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32
 ","@value":5114},"inV":{"@type":"gremlin:int32","@value":21},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5115},"inV":{"@type":"gremlin:int32","@value":117},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5116},"inV":{"@type":"gremlin:int32","@value":78},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5117},"inV":{"@type":"gremlin:int32","@value":38},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5118},"inV":{"@type":"gremlin:int32","@value":169},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5119},"inV":{"@type":"gremlin:int32","@value":118},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}],"sungBy":[{"id":{"@type":"gremlin:int32","@value":7064},"inV":{"@type":"gremlin:int32","@value":340}}],"writte
 nBy":[{"id":{"@type":"gremlin:int32","@value":7063},"inV":{"@type":"gremlin:int32","@value":339}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":9},"value":"BERTHA"}],"songType":[{"id":{"@type":"gremlin:int64","@value":11},"value":"original"}],"performances":[{"id":{"@type":"gremlin:int64","@value":10},"value":{"@type":"gremlin:int32","@value":394}}]}}
+{"id":{"@type":"gremlin:int32","@value":5},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":194},"outV":{"@type":"gremlin:int32","@value":70},"properties":{"weight":{"@type":"gremlin:int32","@value":8}}},{"id":{"@type":"gremlin:int32","@value":962},"outV":{"@type":"gremlin:int32","@value":67},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":3},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5446},"outV":{"@type":"gremlin:int32","@value":231},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":6344},"outV":{"@type":"gremlin:int32","@value":21},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":1738},"outV":{"@type":"gremlin:int32","@value":82},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id"
 :{"@type":"gremlin:int32","@value":6666},"outV":{"@type":"gremlin:int32","@value":12},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1867},"outV":{"@type":"gremlin:int32","@value":94},"properties":{"weight":{"@type":"gremlin:int32","@value":15}}},{"id":{"@type":"gremlin:int32","@value":4300},"outV":{"@type":"gremlin:int32","@value":110},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":847},"outV":{"@type":"gremlin:int32","@value":171},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2832},"outV":{"@type":"gremlin:int32","@value":101},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":6032},"outV":{"@type":"gremlin:int32","@value":115},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1170},"outV":{"@type":"gremlin:int32","@
 value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5330},"outV":{"@type":"gremlin:int32","@value":238},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1491},"outV":{"@type":"gremlin:int32","@value":164},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":1429},"outV":{"@type":"gremlin:int32","@value":83},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3033},"outV":{"@type":"gremlin:int32","@value":14},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6298},"outV":{"@type":"gremlin:int32","@value":49},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1373},"outV":{"@type":"gremlin:int32","@value":130},"properties":{"weight":{"@type":"gremlin:int32","@value":11}}},{"
 id":{"@type":"gremlin:int32","@value":4447},"outV":{"@type":"gremlin:int32","@value":113},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5151},"outV":{"@type":"gremlin:int32","@value":125},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":5343},"outV":{"@type":"gremlin:int32","@value":165},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6431},"outV":{"@type":"gremlin:int32","@value":134},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":1953},"outV":{"@type":"gremlin:int32","@value":148},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":1634},"outV":{"@type":"gremlin:int32","@value":210},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2274},"outV":{"@type":"gremlin:int
 32","@value":25},"properties":{"weight":{"@type":"gremlin:int32","@value":8}}},{"id":{"@type":"gremlin:int32","@value":100},"outV":{"@type":"gremlin:int32","@value":46},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":933},"outV":{"@type":"gremlin:int32","@value":91},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2021},"outV":{"@type":"gremlin:int32","@value":149},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6694},"outV":{"@type":"gremlin:int32","@value":141},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":4009},"outV":{"@type":"gremlin:int32","@value":225},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":682},"outV":{"@type":"gremlin:int32","@value":219},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}
 ,{"id":{"@type":"gremlin:int32","@value":3694},"outV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:int32","@value":57}}},{"id":{"@type":"gremlin:int32","@value":4718},"outV":{"@type":"gremlin:int32","@value":186},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":3055},"outV":{"@type":"gremlin:int32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":2480},"outV":{"@type":"gremlin:int32","@value":68},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2736},"outV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5426},"outV":{"@type":"gremlin:int32","@value":102},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6899},"outV":{"@type":"gremlin:int3
 2","@value":147},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5879},"outV":{"@type":"gremlin:int32","@value":96},"properties":{"weight":{"@type":"gremlin:int32","@value":22}}},{"id":{"@type":"gremlin:int32","@value":6201},"outV":{"@type":"gremlin:int32","@value":319},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5370},"outV":{"@type":"gremlin:int32","@value":132},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":700},"outV":{"@type":"gremlin:int32","@value":206},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2236},"outV":{"@type":"gremlin:int32","@value":29},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":4604},"outV":{"@type":"gremlin:int32","@value":85},"properties":{"weight":{"@type":"gremlin:int32","@value":2}
 }},{"id":{"@type":"gremlin:int32","@value":5759},"outV":{"@type":"gremlin:int32","@value":129},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":273},"inV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:int32","@value":40}}},{"id":{"@type":"gremlin:int32","@value":274},"inV":{"@type":"gremlin:int32","@value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":275},"inV":{"@type":"gremlin:int32","@value":114},"properties":{"weight":{"@type":"gremlin:int32","@value":40}}},{"id":{"@type":"gremlin:int32","@value":276},"inV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":277},"inV":{"@type":"gremlin:int32","@value":74},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":278},"inV":{"@type":
 "gremlin:int32","@value":122},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":279},"inV":{"@type":"gremlin:int32","@value":133},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":280},"inV":{"@type":"gremlin:int32","@value":83},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":281},"inV":{"@type":"gremlin:int32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":282},"inV":{"@type":"gremlin:int32","@value":159},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":283},"inV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":284},"inV":{"@type":"gremlin:int32","@value":25},"properties":{"weight":{"@type":"gremlin:int32","@value":1
 9}}},{"id":{"@type":"gremlin:int32","@value":285},"inV":{"@type":"gremlin:int32","@value":96},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":286},"inV":{"@type":"gremlin:int32","@value":160},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":287},"inV":{"@type":"gremlin:int32","@value":32},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":288},"inV":{"@type":"gremlin:int32","@value":120},"properties":{"weight":{"@type":"gremlin:int32","@value":16}}},{"id":{"@type":"gremlin:int32","@value":289},"inV":{"@type":"gremlin:int32","@value":50},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":290},"inV":{"@type":"gremlin:int32","@value":116},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":291},"inV":{"@type":"gremlin:int32","@val
 ue":127},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":292},"inV":{"@type":"gremlin:int32","@value":65},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":293},"inV":{"@type":"gremlin:int32","@value":130},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":294},"inV":{"@type":"gremlin:int32","@value":125},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":295},"inV":{"@type":"gremlin:int32","@value":70},"properties":{"weight":{"@type":"gremlin:int32","@value":13}}},{"id":{"@type":"gremlin:int32","@value":296},"inV":{"@type":"gremlin:int32","@value":134},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":297},"inV":{"@type":"gremlin:int32","@value":161},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":
 "gremlin:int32","@value":298},"inV":{"@type":"gremlin:int32","@value":162},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":299},"inV":{"@type":"gremlin:int32","@value":124},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":300},"inV":{"@type":"gremlin:int32","@value":38},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":301},"inV":{"@type":"gremlin:int32","@value":29},"properties":{"weight":{"@type":"gremlin:int32","@value":11}}},{"id":{"@type":"gremlin:int32","@value":302},"inV":{"@type":"gremlin:int32","@value":163},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":303},"inV":{"@type":"gremlin:int32","@value":94},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":304},"inV":{"@type":"gremlin:int32","@value":85},"properties":
 {"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":305},"inV":{"@type":"gremlin:int32","@value":164},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":306},"inV":{"@type":"gremlin:int32","@value":64},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":307},"inV":{"@type":"gremlin:int32","@value":150},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":308},"inV":{"@type":"gremlin:int32","@value":165},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":309},"inV":{"@type":"gremlin:int32","@value":92},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":310},"inV":{"@type":"gremlin:int32","@value":140},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value
 ":311},"inV":{"@type":"gremlin:int32","@value":166},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}],"sungBy":[{"id":{"@type":"gremlin:int32","@value":7582},"inV":{"@type":"gremlin:int32","@value":340}}],"writtenBy":[{"id":{"@type":"gremlin:int32","@value":7581},"inV":{"@type":"gremlin:int32","@value":446}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":12},"value":"GOING DOWN THE ROAD FEELING BAD"}],"songType":[{"id":{"@type":"gremlin:int64","@value":14},"value":"cover"}],"performances":[{"id":{"@type":"gremlin:int64","@value":13},"value":{"@type":"gremlin:int32","@value":293}}]}}
+{"id":{"@type":"gremlin:int32","@value":6},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":4},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2023},"outV":{"@type":"gremlin:int32","@value":282},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":2406},"inV":{"@type":"gremlin:int32","@value":293},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2407},"inV":{"@type":"gremlin:int32","@value":96},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}],"sungBy":[{"id":{"@type":"gremlin:int32","@value":7782},"inV":{"@type":"gremlin:int32","@value":351}}],"writtenBy":[{"id":{"@type":"gremlin:int32","@value":7781},"inV":{"@type":"gremlin:int32","@value":527}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":15},"value":"
 MONA"}],"songType":[{"id":{"@type":"gremlin:int64","@value":17},"value":"cover"}],"performances":[{"id":{"@type":"gremlin:int64","@value":16},"value":{"@type":"gremlin:int32","@value":1}}]}}
+{"id":{"@type":"gremlin:int32","@value":7},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":2607},"outV":{"@type":"gremlin:int32","@value":295},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":5},"inV":{"@type":"gremlin:int32","@value":8},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":18},"value":"WHERE HAVE THE HEROES GONE"}],"songType":[{"id":{"@type":"gremlin:int64","@value":20},"value":""}],"performances":[{"id":{"@type":"gremlin:int64","@value":19},"value":{"@type":"gremlin:int32","@value":0}}]}}
+{"id":{"@type":"gremlin:int32","@value":8},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":4705},"outV":{"@type":"gremlin:int32","@value":111},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5},"outV":{"@type":"gremlin:int32","@value":7},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5901},"outV":{"@type":"gremlin:int32","@value":96},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":2976},"inV":{"@type":"gremlin:int32","@value":302},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2977},"inV":{"@type":"gremlin:int32","@value":96},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2978},"inV":{"@type":"gremlin:int32","@value":72},"properties":{"weight":{"@type":"gremlin:in
 t32","@value":1}}}],"sungBy":[{"id":{"@type":"gremlin:int32","@value":7814},"inV":{"@type":"gremlin:int32","@value":351}}],"writtenBy":[{"id":{"@type":"gremlin:int32","@value":7813},"inV":{"@type":"gremlin:int32","@value":674}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":21},"value":"OH BOY"}],"songType":[{"id":{"@type":"gremlin:int64","@value":23},"value":"cover"}],"performances":[{"id":{"@type":"gremlin:int64","@value":22},"value":{"@type":"gremlin:int32","@value":2}}]}}
+{"id":{"@type":"gremlin:int32","@value":9},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":3776},"outV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":65},"outV":{"@type":"gremlin:int32","@value":46},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":1923},"outV":{"@type":"gremlin:int32","@value":103},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":5956},"outV":{"@type":"gremlin:int32","@value":50},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3077},"outV":{"@type":"gremlin:int32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5832},"outV":{"@type":"gremlin:int32","@value":76},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{
 "id":{"@type":"gremlin:int32","@value":1161},"outV":{"@type":"gremlin:int32","@value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":8}}},{"id":{"@type":"gremlin:int32","@value":2699},"outV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":6539},"outV":{"@type":"gremlin:int32","@value":55},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6667},"outV":{"@type":"gremlin:int32","@value":12},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":2578},"outV":{"@type":"gremlin:int32","@value":57},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":787},"outV":{"@type":"gremlin:int32","@value":122},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3542},"outV":{"@type":"gremlin:int32","@
 value":201},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2775},"outV":{"@type":"gremlin:int32","@value":15},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":2840},"outV":{"@type":"gremlin:int32","@value":101},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":4953},"outV":{"@type":"gremlin:int32","@value":86},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":1572},"outV":{"@type":"gremlin:int32","@value":18},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":229},"outV":{"@type":"gremlin:int32","@value":70},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4264},"outV":{"@type":"gremlin:int32","@value":10},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id"
 :{"@type":"gremlin:int32","@value":4969},"outV":{"@type":"gremlin:int32","@value":236},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3498},"outV":{"@type":"gremlin:int32","@value":58},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":5226},"outV":{"@type":"gremlin:int32","@value":216},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5548},"outV":{"@type":"gremlin:int32","@value":166},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2990},"outV":{"@type":"gremlin:int32","@value":14},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":3950},"outV":{"@type":"gremlin:int32","@value":138},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2488},"outV":{"@type":"gremlin:int32","@
 value":68},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6776},"outV":{"@type":"gremlin:int32","@value":39},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3641},"outV":{"@type":"gremlin:int32","@value":24},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":1532},"outV":{"@type":"gremlin:int32","@value":164},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":1853},"outV":{"@type":"gremlin:int32","@value":94},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":638},"outV":{"@type":"gremlin:int32","@value":23},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6335},"outV":{"@type":"gremlin:int32","@value":21},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}]},"out
 E":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":6},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":7},"inV":{"@type":"gremlin:int32","@value":11},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":8},"inV":{"@type":"gremlin:int32","@value":12},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":9},"inV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":10},"inV":{"@type":"gremlin:int32","@value":14},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":11},"inV":{"@type":"gremlin:int32","@value":15},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":12},"inV":{"@type":"gremlin:int32","@value"
 :16},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":13},"inV":{"@type":"gremlin:int32","@value":17},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":14},"inV":{"@type":"gremlin:int32","@value":18},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":15},"inV":{"@type":"gremlin:int32","@value":19},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":16},"inV":{"@type":"gremlin:int32","@value":20},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":17},"inV":{"@type":"gremlin:int32","@value":21},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":18},"inV":{"@type":"gremlin:int32","@value":22},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32"
 ,"@value":19},"inV":{"@type":"gremlin:int32","@value":23},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":20},"inV":{"@type":"gremlin:int32","@value":24},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":21},"inV":{"@type":"gremlin:int32","@value":25},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":22},"inV":{"@type":"gremlin:int32","@value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":23},"inV":{"@type":"gremlin:int32","@value":27},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":24},"inV":{"@type":"gremlin:int32","@value":28},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":25},"inV":{"@type":"gremlin:int32","@value":29},"properties":{"weight":{"@type":"gremli
 n:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":26},"inV":{"@type":"gremlin:int32","@value":30},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":27},"inV":{"@type":"gremlin:int32","@value":31},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":28},"inV":{"@type":"gremlin:int32","@value":32},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":29},"inV":{"@type":"gremlin:int32","@value":33},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":30},"inV":{"@type":"gremlin:int32","@value":34},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":31},"inV":{"@type":"gremlin:int32","@value":35},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":32},"inV":{"@type":"gremlin:int32"
 ,"@value":36},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":33},"inV":{"@type":"gremlin:int32","@value":37},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":34},"inV":{"@type":"gremlin:int32","@value":38},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":35},"inV":{"@type":"gremlin:int32","@value":39},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":36},"inV":{"@type":"gremlin:int32","@value":40},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":37},"inV":{"@type":"gremlin:int32","@value":41},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":38},"inV":{"@type":"gremlin:int32","@value":42},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"greml
 in:int32","@value":39},"inV":{"@type":"gremlin:int32","@value":43},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}}],"sungBy":[{"id":{"@type":"gremlin:int32","@value":7190},"inV":{"@type":"gremlin:int32","@value":340}}],"writtenBy":[{"id":{"@type":"gremlin:int32","@value":7189},"inV":{"@type":"gremlin:int32","@value":339}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":24},"value":"HERE COMES SUNSHINE"}],"songType":[{"id":{"@type":"gremlin:int64","@value":26},"value":"original"}],"performances":[{"id":{"@type":"gremlin:int64","@value":25},"value":{"@type":"gremlin:int32","@value":65}}]}}
+{"id":{"@type":"gremlin:int32","@value":10},"label":"song","inE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":3841},"outV":{"@type":"gremlin:int32","@value":60},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1027},"outV":{"@type":"gremlin:int32","@value":73},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":6},"outV":{"@type":"gremlin:int32","@value":9},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3335},"outV":{"@type":"gremlin:int32","@value":155},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4103},"outV":{"@type":"gremlin:int32","@value":48},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":6279},"outV":{"@type":"gremlin:int32","@value":49},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"
 id":{"@type":"gremlin:int32","@value":4233},"outV":{"@type":"gremlin:int32","@value":52},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4878},"outV":{"@type":"gremlin:int32","@value":100},"properties":{"weight":{"@type":"gremlin:int32","@value":19}}},{"id":{"@type":"gremlin:int32","@value":5264},"outV":{"@type":"gremlin:int32","@value":32},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":2196},"outV":{"@type":"gremlin:int32","@value":75},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":151},"outV":{"@type":"gremlin:int32","@value":108},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":1571},"outV":{"@type":"gremlin:int32","@value":18},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":3619},"outV":{"@type":"gremlin:int32","
 @value":24},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3237},"outV":{"@type":"gremlin:int32","@value":63},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":4647},"outV":{"@type":"gremlin:int32","@value":154},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4521},"outV":{"@type":"gremlin:int32","@value":105},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":1195},"outV":{"@type":"gremlin:int32","@value":26},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6444},"outV":{"@type":"gremlin:int32","@value":187},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":6956},"outV":{"@type":"gremlin:int32","@value":84},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"
 id":{"@type":"gremlin:int32","@value":687},"outV":{"@type":"gremlin:int32","@value":157},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4784},"outV":{"@type":"gremlin:int32","@value":114},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6064},"outV":{"@type":"gremlin:int32","@value":115},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1714},"outV":{"@type":"gremlin:int32","@value":82},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":3890},"outV":{"@type":"gremlin:int32","@value":51},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":55},"outV":{"@type":"gremlin:int32","@value":46},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5175},"outV":{"@type":"gremlin:int32","@v
 alue":71},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1337},"outV":{"@type":"gremlin:int32","@value":31},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1083},"outV":{"@type":"gremlin:int32","@value":59},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":4155},"outV":{"@type":"gremlin:int32","@value":54},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":6077},"outV":{"@type":"gremlin:int32","@value":72},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":5441},"outV":{"@type":"gremlin:int32","@value":239},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1987},"outV":{"@type":"gremlin:int32","@value":152},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id
 ":{"@type":"gremlin:int32","@value":1860},"outV":{"@type":"gremlin:int32","@value":94},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2116},"outV":{"@type":"gremlin:int32","@value":17},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":3269},"outV":{"@type":"gremlin:int32","@value":160},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":454},"outV":{"@type":"gremlin:int32","@value":38},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3142},"outV":{"@type":"gremlin:int32","@value":104},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":2505},"outV":{"@type":"gremlin:int32","@value":57},"properties":{"weight":{"@type":"gremlin:int32","@value":12}}},{"id":{"@type":"gremlin:int32","@value":6603},"outV":{"@type":"gremlin:int32","@v
 alue":127},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":6859},"outV":{"@type":"gremlin:int32","@value":64},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":717},"outV":{"@type":"gremlin:int32","@value":80},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":1360},"outV":{"@type":"gremlin:int32","@value":130},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":3026},"outV":{"@type":"gremlin:int32","@value":14},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5972},"outV":{"@type":"gremlin:int32","@value":50},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":5077},"outV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{
 "@type":"gremlin:int32","@value":2392},"outV":{"@type":"gremlin:int32","@value":87},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":1250},"outV":{"@type":"gremlin:int32","@value":27},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":4706},"outV":{"@type":"gremlin:int32","@value":111},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":6755},"outV":{"@type":"gremlin:int32","@value":53},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":485},"outV":{"@type":"gremlin:int32","@value":98},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":2917},"outV":{"@type":"gremlin:int32","@value":78},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":3559},"outV":{"@type":"gremlin:int32","@valu
 e":56},"properties":{"weight":{"@type":"gremlin:int32","@value":16}}},{"id":{"@type":"gremlin:int32","@value":3436},"outV":{"@type":"gremlin:int32","@value":58},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":3820},"outV":{"@type":"gremlin:int32","@value":88},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4463},"outV":{"@type":"gremlin:int32","@value":202},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":880},"outV":{"@type":"gremlin:int32","@value":189},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":6256},"outV":{"@type":"gremlin:int32","@value":117},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3698},"outV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{
 "@type":"gremlin:int32","@value":2035},"outV":{"@type":"gremlin:int32","@value":180},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2291},"outV":{"@type":"gremlin:int32","@value":25},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":3317},"outV":{"@type":"gremlin:int32","@value":252},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":2806},"outV":{"@type":"gremlin:int32","@value":15},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":2427},"outV":{"@type":"gremlin:int32","@value":68},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":6782},"outV":{"@type":"gremlin:int32","@value":39},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":4351},"outV":{"@type":"gremlin:int32","@valu
 e":62},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}}]},"outE":{"followedBy":[{"id":{"@type":"gremlin:int32","@value":4235},"inV":{"@type":"gremlin:int32","@value":56},"properties":{"weight":{"@type":"gremlin:int32","@value":13}}},{"id":{"@type":"gremlin:int32","@value":4236},"inV":{"@type":"gremlin:int32","@value":27},"properties":{"weight":{"@type":"gremlin:int32","@value":7}}},{"id":{"@type":"gremlin:int32","@value":4237},"inV":{"@type":"gremlin:int32","@value":58},"properties":{"weight":{"@type":"gremlin:int32","@value":11}}},{"id":{"@type":"gremlin:int32","@value":4238},"inV":{"@type":"gremlin:int32","@value":80},"properties":{"weight":{"@type":"gremlin:int32","@value":6}}},{"id":{"@type":"gremlin:int32","@value":4239},"inV":{"@type":"gremlin:int32","@value":59},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":4240},"inV":{"@type":"gremlin:int32","@value":100},"properties":{"weight":{"@type":"gremlin:int32","@v
 alue":21}}},{"id":{"@type":"gremlin:int32","@value":4241},"inV":{"@type":"gremlin:int32","@value":104},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":4242},"inV":{"@type":"gremlin:int32","@value":50},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":4243},"inV":{"@type":"gremlin:int32","@value":48},"properties":{"weight":{"@type":"gremlin:int32","@value":8}}},{"id":{"@type":"gremlin:int32","@value":4244},"inV":{"@type":"gremlin:int32","@value":54},"properties":{"weight":{"@type":"gremlin:int32","@value":13}}},{"id":{"@type":"gremlin:int32","@value":4245},"inV":{"@type":"gremlin:int32","@value":19},"properties":{"weight":{"@type":"gremlin:int32","@value":9}}},{"id":{"@type":"gremlin:int32","@value":4246},"inV":{"@type":"gremlin:int32","@value":72},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":4247},"inV":{"@type":"gremlin:i
 nt32","@value":14},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4248},"inV":{"@type":"gremlin:int32","@value":122},"properties":{"weight":{"@type":"gremlin:int32","@value":2}}},{"id":{"@type":"gremlin:int32","@value":4249},"inV":{"@type":"gremlin:int32","@value":235},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4250},"inV":{"@type":"gremlin:int32","@value":218},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4251},"inV":{"@type":"gremlin:int32","@value":252},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4252},"inV":{"@type":"gremlin:int32","@value":89},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":4253},"inV":{"@type":"gremlin:int32","@value":57},"properties":{"weight":{"@type":"gremlin:int32","@value":12}}}
 ,{"id":{"@type":"gremlin:int32","@value":4254},"inV":{"@type":"gremlin:int32","@value":49},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":4255},"inV":{"@type":"gremlin:int32","@value":94},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":4256},"inV":{"@type":"gremlin:int32","@value":153},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4257},"inV":{"@type":"gremlin:int32","@value":13},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4258},"inV":{"@type":"gremlin:int32","@value":160},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4259},"inV":{"@type":"gremlin:int32","@value":51},"properties":{"weight":{"@type":"gremlin:int32","@value":10}}},{"id":{"@type":"gremlin:int32","@value":4260},"inV":{"@type":"gremlin:int32","@va
 lue":18},"properties":{"weight":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":4261},"inV":{"@type":"gremlin:int32","@value":202},"properties":{"weight":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":4262},"inV":{"@type":"gremlin:int32","@value":17},"properties":{"weight":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":4263},"inV":{"@type":"gremlin:int32","@value":46},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4264},"inV":{"@type":"gremlin:int32","@value":9},"properties":{"weight":{"@type":"gremlin:int32","@value":1}}},{"id":{"@type":"gremlin:int32","@value":4265},"inV":{"@type":"gremlin:int32","@value":55},"properties"

<TRUNCATED>

[15/19] tinkerpop git commit: TINKERPOP-1274: GraphSON 2.0.

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/data/grateful-dead-typed.json
----------------------------------------------------------------------
diff --git a/data/grateful-dead-typed.json b/data/grateful-dead-typed.json
index 9679502..3806d5e 100644
--- a/data/grateful-dead-typed.json
+++ b/data/grateful-dead-typed.json
@@ -1,257 +1,257 @@
 {"@class":"java.util.HashMap","id":1,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":3059,"outV":153,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":276,"outV":5,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3704,"outV":3,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":4383,"outV":62,"properties":{"@class":"java.util.HashMap","weight":1}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":0,"inV":2,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1,"inV":3,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2,"inV":4,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3,"inV":5,"properties":{"@class":"j
 ava.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4,"inV":6,"properties":{"@class":"java.util.HashMap","weight":1}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7612,"inV":340}]],"writtenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7611,"inV":527}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",0],"value":"HEY BO DIDDLEY"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",2],"value":"cover"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",1],"value":5}]]}}
 {"@class":"java.util.HashMap","id":2,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":0,"outV":1,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":323,"outV":34,"properties":{"@class":"java.util.HashMap","weight":1}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":6190,"inV":123,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6191,"inV":50,"properties":{"@class":"java.util.HashMap","weight":1}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7666,"inV":525}]],"writtenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7665,"inV":525}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",3],"value":"IM A MAN"}]],"songType":["java.util.ArrayList",[{"@class":"j
 ava.util.HashMap","id":["java.lang.Long",5],"value":"cover"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",4],"value":1}]]}}
-{"@class":"java.util.HashMap","id":3,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":1,"outV":1,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2051,"outV":92,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":1412,"outV":83,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":6669,"outV":12,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1166,"outV":26,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":6286,"outV":49,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":910,"outV":91,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":526,"outV":120,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap"
 ,"id":273,"outV":5,"properties":{"@class":"java.util.HashMap","weight":40}},{"@class":"java.util.HashMap","id":2194,"outV":235,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1684,"outV":124,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3221,"outV":63,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1941,"outV":148,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":2712,"outV":13,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":6425,"outV":134,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5787,"outV":76,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5148,"outV":125,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":6692,"outV":141,"properties":{"@c
 lass":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6310,"outV":123,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6448,"outV":187,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":2225,"outV":226,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5042,"outV":209,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4789,"outV":114,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":1464,"outV":81,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2232,"outV":215,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4665,"outV":154,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2235,"outV":29,"properties":{"@class":"java.util.HashMap","weight":1
 63}},{"@class":"java.util.HashMap","id":6208,"outV":319,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":706,"outV":206,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":835,"outV":171,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5188,"outV":99,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1862,"outV":94,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":6343,"outV":21,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1735,"outV":82,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4937,"outV":277,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3276,"outV":160,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id"
 :3149,"outV":104,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1358,"outV":130,"properties":{"@class":"java.util.HashMap","weight":18}},{"@class":"java.util.HashMap","id":4304,"outV":110,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1105,"outV":59,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":722,"outV":80,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4182,"outV":54,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1499,"outV":164,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2397,"outV":179,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6623,"outV":127,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":351,"outV":178,"properties":{"@class
 ":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2018,"outV":149,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":7011,"outV":89,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5348,"outV":165,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2278,"outV":25,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":1255,"outV":27,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3048,"outV":153,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":5867,"outV":96,"properties":{"@class":"java.util.HashMap","weight":116}},{"@class":"java.util.HashMap","id":364,"outV":74,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":492,"outV":98,"properties":{"@class":"java.util.HashMap","weight":1}},{"@c
 lass":"java.util.HashMap","id":3948,"outV":138,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":4335,"outV":62,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3312,"outV":252,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5745,"outV":129,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4596,"outV":85,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5367,"outV":132,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":633,"outV":23,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":891,"outV":140,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5375,"outV":69,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6143,"out
 V":289,"properties":{"@class":"java.util.HashMap","weight":3}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":3712,"inV":27,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3713,"inV":110,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3714,"inV":215,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3715,"inV":127,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":3716,"inV":83,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3717,"inV":103,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3718,"inV":68,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3719,"inV":134,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"
 java.util.HashMap","id":3720,"inV":25,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":3721,"inV":125,"properties":{"@class":"java.util.HashMap","weight":54}},{"@class":"java.util.HashMap","id":3722,"inV":130,"properties":{"@class":"java.util.HashMap","weight":26}},{"@class":"java.util.HashMap","id":3723,"inV":141,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3724,"inV":145,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3725,"inV":319,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3726,"inV":12,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3727,"inV":160,"properties":{"@class":"java.util.HashMap","weight":37}},{"@class":"java.util.HashMap","id":3728,"inV":70,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3729,"inV":123,"pr
 operties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3730,"inV":129,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3731,"inV":30,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3732,"inV":148,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3733,"inV":211,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3734,"inV":87,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":3735,"inV":164,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3736,"inV":64,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3737,"inV":320,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3738,"inV":61,"properties":{"@class":"java.util.HashMap","weigh
 t":3}},{"@class":"java.util.HashMap","id":3739,"inV":210,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3740,"inV":50,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":3741,"inV":128,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3742,"inV":315,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3743,"inV":261,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3744,"inV":213,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":3745,"inV":72,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3746,"inV":38,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3747,"inV":204,"properties":{"@class":"java.util.HashMap","weight":14}},{"@class":"java.util.HashMap","id":37
 48,"inV":62,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3749,"inV":150,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":3750,"inV":309,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3751,"inV":131,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3752,"inV":151,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3753,"inV":321,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3754,"inV":90,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3755,"inV":82,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3756,"inV":120,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3757,"inV":46,"properties":{"@class":"java.util.
 HashMap","weight":5}},{"@class":"java.util.HashMap","id":3758,"inV":157,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3759,"inV":59,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3760,"inV":81,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3761,"inV":86,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3762,"inV":140,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3763,"inV":201,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3764,"inV":214,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3765,"inV":185,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3766,"inV":216,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.Has
 hMap","id":3767,"inV":217,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3768,"inV":236,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3769,"inV":193,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3770,"inV":79,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3771,"inV":84,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3772,"inV":23,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3773,"inV":31,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3774,"inV":240,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3775,"inV":292,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3776,"inV":9,"properties":{"@class":
 "java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3777,"inV":259,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3694,"inV":5,"properties":{"@class":"java.util.HashMap","weight":57}},{"@class":"java.util.HashMap","id":3695,"inV":114,"properties":{"@class":"java.util.HashMap","weight":30}},{"@class":"java.util.HashMap","id":3696,"inV":74,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3697,"inV":78,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3698,"inV":10,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3699,"inV":26,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3700,"inV":153,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":3701,"inV":4,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.
 util.HashMap","id":3702,"inV":317,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3703,"inV":13,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3704,"inV":1,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3705,"inV":21,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3706,"inV":57,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3707,"inV":122,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3708,"inV":318,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3709,"inV":94,"properties":{"@class":"java.util.HashMap","weight":26}},{"@class":"java.util.HashMap","id":3710,"inV":96,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":3711,"inV":124,"properties":{"
 @class":"java.util.HashMap","weight":15}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7808,"inV":351}]],"writtenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7807,"inV":671}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",6],"value":"NOT FADE AWAY"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",8],"value":"cover"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",7],"value":531}]]}}
-{"@class":"java.util.HashMap","id":4,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":128,"outV":97,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1664,"outV":267,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2,"outV":1,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4099,"outV":48,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1667,"outV":124,"properties":{"@class":"java.util.HashMap","weight":15}},{"@class":"java.util.HashMap","id":899,"outV":140,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1156,"outV":26,"properties":{"@class":"java.util.HashMap","weight":16}},{"@class":"java.util.HashMap","id":773,"outV":122,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.Hash
 Map","id":6534,"outV":242,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6664,"outV":12,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":1032,"outV":73,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5129,"outV":222,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5387,"outV":69,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5517,"outV":43,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5006,"outV":30,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6030,"outV":204,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2063,"outV":92,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":915,"outV":91,"properties":{"@
 class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6940,"outV":84,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":2464,"outV":68,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5795,"outV":76,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3620,"outV":24,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":4772,"outV":114,"properties":{"@class":"java.util.HashMap","weight":25}},{"@class":"java.util.HashMap","id":2982,"outV":14,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3367,"outV":184,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":2345,"outV":87,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2861,"outV":101,"properties":{"@class":"java.util.HashMap","weight":6}}
 ,{"@class":"java.util.HashMap","id":1840,"outV":275,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5425,"outV":102,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":180,"outV":70,"properties":{"@class":"java.util.HashMap","weight":46}},{"@class":"java.util.HashMap","id":2613,"outV":158,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5562,"outV":162,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5434,"outV":217,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1469,"outV":81,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":446,"outV":38,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":2494,"outV":90,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":326
 6,"outV":160,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":326,"outV":34,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6855,"outV":64,"properties":{"@class":"java.util.HashMap","weight":12}},{"@class":"java.util.HashMap","id":583,"outV":120,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":73,"outV":46,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":4425,"outV":212,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4941,"outV":86,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":1613,"outV":210,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6350,"outV":21,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3535,"outV":201,"properties":{"@class":"java
 .util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":980,"outV":11,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5206,"outV":99,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1494,"outV":164,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5847,"outV":61,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6490,"outV":187,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2781,"outV":15,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5600,"outV":42,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":353,"outV":74,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":5474,"outV":79,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java
 .util.HashMap","id":3811,"outV":88,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":1891,"outV":103,"properties":{"@class":"java.util.HashMap","weight":19}},{"@class":"java.util.HashMap","id":5989,"outV":50,"properties":{"@class":"java.util.HashMap","weight":12}},{"@class":"java.util.HashMap","id":4327,"outV":110,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2538,"outV":57,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3050,"outV":153,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":4970,"outV":236,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2283,"outV":25,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":236,"outV":145,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6126,"outV":72,"
 properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5232,"outV":214,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":4594,"outV":85,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4084,"outV":109,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1652,"outV":213,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3701,"outV":3,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5621,"outV":22,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":629,"outV":23,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":7029,"outV":89,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5238,"outV":32,"properties":{"@class":"java.util.HashMap"
 ,"weight":3}},{"@class":"java.util.HashMap","id":2684,"outV":13,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":3325,"outV":268,"properties":{"@class":"java.util.HashMap","weight":1}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":5120,"inV":40,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":5121,"inV":33,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5122,"inV":79,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5123,"inV":292,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5071,"inV":50,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":5072,"inV":12,"properties":{"@class":"java.util.HashMap","weight":26}},{"@class":"java.util.HashMap","id":5073,"inV":18,"properties"
 :{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5074,"inV":24,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":5075,"inV":23,"properties":{"@class":"java.util.HashMap","weight":63}},{"@class":"java.util.HashMap","id":5076,"inV":13,"properties":{"@class":"java.util.HashMap","weight":12}},{"@class":"java.util.HashMap","id":5077,"inV":10,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5078,"inV":11,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5079,"inV":26,"properties":{"@class":"java.util.HashMap","weight":18}},{"@class":"java.util.HashMap","id":5080,"inV":22,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5081,"inV":16,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5082,"inV":49,"properties":{"@class":"java.util.HashMap","weight":1}},{"@cl
 ass":"java.util.HashMap","id":5083,"inV":25,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5084,"inV":51,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5085,"inV":15,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5086,"inV":112,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5087,"inV":121,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5088,"inV":32,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":5089,"inV":68,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5090,"inV":120,"properties":{"@class":"java.util.HashMap","weight":77}},{"@class":"java.util.HashMap","id":5091,"inV":103,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5092,"inV":42,"pr
 operties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5093,"inV":85,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5094,"inV":76,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":5095,"inV":181,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5096,"inV":14,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5097,"inV":122,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5098,"inV":153,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5099,"inV":96,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5100,"inV":82,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5101,"inV":110,"properties":{"@class":"java.util.HashMap","weight"
 :1}},{"@class":"java.util.HashMap","id":5102,"inV":19,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":5103,"inV":129,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5104,"inV":84,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5105,"inV":88,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":5106,"inV":97,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5107,"inV":114,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5108,"inV":30,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":5109,"inV":31,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":5110,"inV":69,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5111,"inV"
 :127,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5112,"inV":60,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5113,"inV":39,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5114,"inV":21,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5115,"inV":117,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5116,"inV":78,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5117,"inV":38,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5118,"inV":169,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5119,"inV":118,"properties":{"@class":"java.util.HashMap","weight":1}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7064,"inV":340}]],"writ
 tenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7063,"inV":339}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",9],"value":"BERTHA"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",11],"value":"original"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",10],"value":394}]]}}
-{"@class":"java.util.HashMap","id":5,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":962,"outV":67,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":194,"outV":70,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":3,"outV":1,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5446,"outV":231,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":6344,"outV":21,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":6666,"outV":12,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1738,"outV":82,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1867,"outV":94,"properties":{"@class":"java.util.HashMap","weight":15}},{"@class":"java.util.HashMap
 ","id":4300,"outV":110,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":847,"outV":171,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2832,"outV":101,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":6032,"outV":115,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1170,"outV":26,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5330,"outV":238,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1491,"outV":164,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":1429,"outV":83,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3033,"outV":14,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6298,"outV":49,"properties":{"@
 class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1373,"outV":130,"properties":{"@class":"java.util.HashMap","weight":11}},{"@class":"java.util.HashMap","id":4447,"outV":113,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5151,"outV":125,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":6431,"outV":134,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5343,"outV":165,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":1953,"outV":148,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":2274,"outV":25,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":1634,"outV":210,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":100,"outV":46,"properties":{"@class":"java.util.HashMap","weight"
 :1}},{"@class":"java.util.HashMap","id":933,"outV":91,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2021,"outV":149,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6694,"outV":141,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":4009,"outV":225,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":682,"outV":219,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3694,"outV":3,"properties":{"@class":"java.util.HashMap","weight":57}},{"@class":"java.util.HashMap","id":4718,"outV":186,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":3055,"outV":153,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":2736,"outV":13,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id"
 :2480,"outV":68,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5426,"outV":102,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6899,"outV":147,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5879,"outV":96,"properties":{"@class":"java.util.HashMap","weight":22}},{"@class":"java.util.HashMap","id":6201,"outV":319,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5370,"outV":132,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2236,"outV":29,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":4604,"outV":85,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":700,"outV":206,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5759,"outV":129,"properties":{"@class
 ":"java.util.HashMap","weight":6}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":273,"inV":3,"properties":{"@class":"java.util.HashMap","weight":40}},{"@class":"java.util.HashMap","id":274,"inV":26,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":275,"inV":114,"properties":{"@class":"java.util.HashMap","weight":40}},{"@class":"java.util.HashMap","id":276,"inV":1,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":277,"inV":74,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":278,"inV":122,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":279,"inV":133,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":280,"inV":83,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":281,"inV":153,"
 properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":282,"inV":159,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":283,"inV":13,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":284,"inV":25,"properties":{"@class":"java.util.HashMap","weight":19}},{"@class":"java.util.HashMap","id":285,"inV":96,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":286,"inV":160,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":287,"inV":32,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":288,"inV":120,"properties":{"@class":"java.util.HashMap","weight":16}},{"@class":"java.util.HashMap","id":289,"inV":50,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":290,"inV":116,"properties":{"@class":"java.util.HashMap","weight":1}}
 ,{"@class":"java.util.HashMap","id":291,"inV":127,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":292,"inV":65,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":293,"inV":130,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":294,"inV":125,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":295,"inV":70,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":296,"inV":134,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":297,"inV":161,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":298,"inV":162,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":299,"inV":124,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":300,"inV":38,"pro
 perties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":301,"inV":29,"properties":{"@class":"java.util.HashMap","weight":11}},{"@class":"java.util.HashMap","id":302,"inV":163,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":303,"inV":94,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":304,"inV":85,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":305,"inV":164,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":306,"inV":64,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":307,"inV":150,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":308,"inV":165,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":309,"inV":92,"properties":{"@class":"java.util.HashMap","weight":1}},{"@c
 lass":"java.util.HashMap","id":310,"inV":140,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":311,"inV":166,"properties":{"@class":"java.util.HashMap","weight":1}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7582,"inV":340}]],"writtenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7581,"inV":446}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",12],"value":"GOING DOWN THE ROAD FEELING BAD"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",14],"value":"cover"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",13],"value":293}]]}}
+{"@class":"java.util.HashMap","id":3,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":1,"outV":1,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2051,"outV":92,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":1412,"outV":83,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":6669,"outV":12,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":526,"outV":120,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":910,"outV":91,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":1166,"outV":26,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":6286,"outV":49,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap"
 ,"id":273,"outV":5,"properties":{"@class":"java.util.HashMap","weight":40}},{"@class":"java.util.HashMap","id":2194,"outV":235,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1684,"outV":124,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1941,"outV":148,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3221,"outV":63,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2712,"outV":13,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":6425,"outV":134,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5787,"outV":76,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5148,"outV":125,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":6692,"outV":141,"properties":{"@c
 lass":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6310,"outV":123,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6448,"outV":187,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":2225,"outV":226,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5042,"outV":209,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4789,"outV":114,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":1464,"outV":81,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2232,"outV":215,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4665,"outV":154,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2235,"outV":29,"properties":{"@class":"java.util.HashMap","weight":1
 63}},{"@class":"java.util.HashMap","id":6208,"outV":319,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":706,"outV":206,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":835,"outV":171,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5188,"outV":99,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1862,"outV":94,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":1735,"outV":82,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6343,"outV":21,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4937,"outV":277,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3276,"outV":160,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id"
 :3149,"outV":104,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1358,"outV":130,"properties":{"@class":"java.util.HashMap","weight":18}},{"@class":"java.util.HashMap","id":4304,"outV":110,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1105,"outV":59,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":722,"outV":80,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4182,"outV":54,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1499,"outV":164,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2397,"outV":179,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":351,"outV":178,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6623,"outV":127,"properties":{"@class
 ":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":2018,"outV":149,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":7011,"outV":89,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5348,"outV":165,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2278,"outV":25,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":1255,"outV":27,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3048,"outV":153,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":5867,"outV":96,"properties":{"@class":"java.util.HashMap","weight":116}},{"@class":"java.util.HashMap","id":364,"outV":74,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":492,"outV":98,"properties":{"@class":"java.util.HashMap","weight":1}},{"@c
 lass":"java.util.HashMap","id":3948,"outV":138,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":4335,"outV":62,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3312,"outV":252,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5745,"outV":129,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4596,"outV":85,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5367,"outV":132,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":633,"outV":23,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":891,"outV":140,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5375,"outV":69,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6143,"out
 V":289,"properties":{"@class":"java.util.HashMap","weight":3}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":3712,"inV":27,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3713,"inV":110,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3714,"inV":215,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3715,"inV":127,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":3716,"inV":83,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3717,"inV":103,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3718,"inV":68,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3719,"inV":134,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"
 java.util.HashMap","id":3720,"inV":25,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":3721,"inV":125,"properties":{"@class":"java.util.HashMap","weight":54}},{"@class":"java.util.HashMap","id":3722,"inV":130,"properties":{"@class":"java.util.HashMap","weight":26}},{"@class":"java.util.HashMap","id":3723,"inV":141,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3724,"inV":145,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3725,"inV":319,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3726,"inV":12,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3727,"inV":160,"properties":{"@class":"java.util.HashMap","weight":37}},{"@class":"java.util.HashMap","id":3728,"inV":70,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3729,"inV":123,"pr
 operties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3730,"inV":129,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3731,"inV":30,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3732,"inV":148,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3733,"inV":211,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3734,"inV":87,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":3735,"inV":164,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3736,"inV":64,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3737,"inV":320,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3738,"inV":61,"properties":{"@class":"java.util.HashMap","weigh
 t":3}},{"@class":"java.util.HashMap","id":3739,"inV":210,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3740,"inV":50,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":3741,"inV":128,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3742,"inV":315,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3743,"inV":261,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3744,"inV":213,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":3745,"inV":72,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3746,"inV":38,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3747,"inV":204,"properties":{"@class":"java.util.HashMap","weight":14}},{"@class":"java.util.HashMap","id":37
 48,"inV":62,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3749,"inV":150,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":3750,"inV":309,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3751,"inV":131,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3752,"inV":151,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3753,"inV":321,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3754,"inV":90,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3755,"inV":82,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3756,"inV":120,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3757,"inV":46,"properties":{"@class":"java.util.
 HashMap","weight":5}},{"@class":"java.util.HashMap","id":3758,"inV":157,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3759,"inV":59,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3760,"inV":81,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3761,"inV":86,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3762,"inV":140,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3763,"inV":201,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3764,"inV":214,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3765,"inV":185,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3766,"inV":216,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.Has
 hMap","id":3767,"inV":217,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3768,"inV":236,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3769,"inV":193,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3770,"inV":79,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3771,"inV":84,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3772,"inV":23,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3773,"inV":31,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3774,"inV":240,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3775,"inV":292,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3776,"inV":9,"properties":{"@class":
 "java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3777,"inV":259,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3694,"inV":5,"properties":{"@class":"java.util.HashMap","weight":57}},{"@class":"java.util.HashMap","id":3695,"inV":114,"properties":{"@class":"java.util.HashMap","weight":30}},{"@class":"java.util.HashMap","id":3696,"inV":74,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3697,"inV":78,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3698,"inV":10,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3699,"inV":26,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3700,"inV":153,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":3701,"inV":4,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.
 util.HashMap","id":3702,"inV":317,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3703,"inV":13,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3704,"inV":1,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3705,"inV":21,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3706,"inV":57,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3707,"inV":122,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3708,"inV":318,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3709,"inV":94,"properties":{"@class":"java.util.HashMap","weight":26}},{"@class":"java.util.HashMap","id":3710,"inV":96,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":3711,"inV":124,"properties":{"
 @class":"java.util.HashMap","weight":15}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7808,"inV":351}]],"writtenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7807,"inV":671}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",6],"value":"NOT FADE AWAY"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",8],"value":"cover"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",7],"value":531}]]}}
+{"@class":"java.util.HashMap","id":4,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":128,"outV":97,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1664,"outV":267,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2,"outV":1,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":899,"outV":140,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1667,"outV":124,"properties":{"@class":"java.util.HashMap","weight":15}},{"@class":"java.util.HashMap","id":4099,"outV":48,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1156,"outV":26,"properties":{"@class":"java.util.HashMap","weight":16}},{"@class":"java.util.HashMap","id":773,"outV":122,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.Hash
 Map","id":6534,"outV":242,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1032,"outV":73,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6664,"outV":12,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5129,"outV":222,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5387,"outV":69,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5517,"outV":43,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5006,"outV":30,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6030,"outV":204,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2063,"outV":92,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":915,"outV":91,"properties":{"@
 class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6940,"outV":84,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":2464,"outV":68,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5795,"outV":76,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3620,"outV":24,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":4772,"outV":114,"properties":{"@class":"java.util.HashMap","weight":25}},{"@class":"java.util.HashMap","id":2982,"outV":14,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3367,"outV":184,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":2345,"outV":87,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2861,"outV":101,"properties":{"@class":"java.util.HashMap","weight":6}}
 ,{"@class":"java.util.HashMap","id":1840,"outV":275,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5425,"outV":102,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":180,"outV":70,"properties":{"@class":"java.util.HashMap","weight":46}},{"@class":"java.util.HashMap","id":2613,"outV":158,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5434,"outV":217,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5562,"outV":162,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":1469,"outV":81,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":446,"outV":38,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":2494,"outV":90,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":326
 6,"outV":160,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":326,"outV":34,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":583,"outV":120,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6855,"outV":64,"properties":{"@class":"java.util.HashMap","weight":12}},{"@class":"java.util.HashMap","id":73,"outV":46,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":4425,"outV":212,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1613,"outV":210,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":4941,"outV":86,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6350,"outV":21,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3535,"outV":201,"properties":{"@class":"java
 .util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":980,"outV":11,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":1494,"outV":164,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5206,"outV":99,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5847,"outV":61,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6490,"outV":187,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2781,"outV":15,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5600,"outV":42,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":353,"outV":74,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":5474,"outV":79,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java
 .util.HashMap","id":1891,"outV":103,"properties":{"@class":"java.util.HashMap","weight":19}},{"@class":"java.util.HashMap","id":3811,"outV":88,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5989,"outV":50,"properties":{"@class":"java.util.HashMap","weight":12}},{"@class":"java.util.HashMap","id":4327,"outV":110,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2538,"outV":57,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3050,"outV":153,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":4970,"outV":236,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2283,"outV":25,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":236,"outV":145,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6126,"outV":72,"
 properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5232,"outV":214,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":4594,"outV":85,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1652,"outV":213,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":4084,"outV":109,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":629,"outV":23,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":3701,"outV":3,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5621,"outV":22,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":7029,"outV":89,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5238,"outV":32,"properties":{"@class":"java.util.HashMap"
 ,"weight":3}},{"@class":"java.util.HashMap","id":2684,"outV":13,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":3325,"outV":268,"properties":{"@class":"java.util.HashMap","weight":1}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":5120,"inV":40,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":5121,"inV":33,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5122,"inV":79,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5123,"inV":292,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5071,"inV":50,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":5072,"inV":12,"properties":{"@class":"java.util.HashMap","weight":26}},{"@class":"java.util.HashMap","id":5073,"inV":18,"properties"
 :{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5074,"inV":24,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":5075,"inV":23,"properties":{"@class":"java.util.HashMap","weight":63}},{"@class":"java.util.HashMap","id":5076,"inV":13,"properties":{"@class":"java.util.HashMap","weight":12}},{"@class":"java.util.HashMap","id":5077,"inV":10,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5078,"inV":11,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5079,"inV":26,"properties":{"@class":"java.util.HashMap","weight":18}},{"@class":"java.util.HashMap","id":5080,"inV":22,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5081,"inV":16,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5082,"inV":49,"properties":{"@class":"java.util.HashMap","weight":1}},{"@cl
 ass":"java.util.HashMap","id":5083,"inV":25,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5084,"inV":51,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5085,"inV":15,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5086,"inV":112,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5087,"inV":121,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5088,"inV":32,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":5089,"inV":68,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5090,"inV":120,"properties":{"@class":"java.util.HashMap","weight":77}},{"@class":"java.util.HashMap","id":5091,"inV":103,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5092,"inV":42,"pr
 operties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5093,"inV":85,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5094,"inV":76,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":5095,"inV":181,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5096,"inV":14,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5097,"inV":122,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5098,"inV":153,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5099,"inV":96,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5100,"inV":82,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5101,"inV":110,"properties":{"@class":"java.util.HashMap","weight"
 :1}},{"@class":"java.util.HashMap","id":5102,"inV":19,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":5103,"inV":129,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5104,"inV":84,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5105,"inV":88,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":5106,"inV":97,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5107,"inV":114,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5108,"inV":30,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":5109,"inV":31,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":5110,"inV":69,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5111,"inV"
 :127,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5112,"inV":60,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5113,"inV":39,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5114,"inV":21,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5115,"inV":117,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5116,"inV":78,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5117,"inV":38,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5118,"inV":169,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5119,"inV":118,"properties":{"@class":"java.util.HashMap","weight":1}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7064,"inV":340}]],"writ
 tenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7063,"inV":339}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",9],"value":"BERTHA"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",11],"value":"original"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",10],"value":394}]]}}
+{"@class":"java.util.HashMap","id":5,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":194,"outV":70,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":962,"outV":67,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3,"outV":1,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5446,"outV":231,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":6344,"outV":21,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":1738,"outV":82,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6666,"outV":12,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1867,"outV":94,"properties":{"@class":"java.util.HashMap","weight":15}},{"@class":"java.util.HashMap
 ","id":4300,"outV":110,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":847,"outV":171,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2832,"outV":101,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":6032,"outV":115,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1170,"outV":26,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5330,"outV":238,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1491,"outV":164,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":1429,"outV":83,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3033,"outV":14,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6298,"outV":49,"properties":{"@
 class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1373,"outV":130,"properties":{"@class":"java.util.HashMap","weight":11}},{"@class":"java.util.HashMap","id":4447,"outV":113,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5151,"outV":125,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":5343,"outV":165,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6431,"outV":134,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":1953,"outV":148,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":1634,"outV":210,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2274,"outV":25,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":100,"outV":46,"properties":{"@class":"java.util.HashMap","weight"
 :1}},{"@class":"java.util.HashMap","id":933,"outV":91,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2021,"outV":149,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6694,"outV":141,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":4009,"outV":225,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":682,"outV":219,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3694,"outV":3,"properties":{"@class":"java.util.HashMap","weight":57}},{"@class":"java.util.HashMap","id":4718,"outV":186,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":3055,"outV":153,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":2480,"outV":68,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id"
 :2736,"outV":13,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5426,"outV":102,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6899,"outV":147,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5879,"outV":96,"properties":{"@class":"java.util.HashMap","weight":22}},{"@class":"java.util.HashMap","id":6201,"outV":319,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5370,"outV":132,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":700,"outV":206,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2236,"outV":29,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":4604,"outV":85,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5759,"outV":129,"properties":{"@class
 ":"java.util.HashMap","weight":6}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":273,"inV":3,"properties":{"@class":"java.util.HashMap","weight":40}},{"@class":"java.util.HashMap","id":274,"inV":26,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":275,"inV":114,"properties":{"@class":"java.util.HashMap","weight":40}},{"@class":"java.util.HashMap","id":276,"inV":1,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":277,"inV":74,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":278,"inV":122,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":279,"inV":133,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":280,"inV":83,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":281,"inV":153,"
 properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":282,"inV":159,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":283,"inV":13,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":284,"inV":25,"properties":{"@class":"java.util.HashMap","weight":19}},{"@class":"java.util.HashMap","id":285,"inV":96,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":286,"inV":160,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":287,"inV":32,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":288,"inV":120,"properties":{"@class":"java.util.HashMap","weight":16}},{"@class":"java.util.HashMap","id":289,"inV":50,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":290,"inV":116,"properties":{"@class":"java.util.HashMap","weight":1}}
 ,{"@class":"java.util.HashMap","id":291,"inV":127,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":292,"inV":65,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":293,"inV":130,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":294,"inV":125,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":295,"inV":70,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":296,"inV":134,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":297,"inV":161,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":298,"inV":162,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":299,"inV":124,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":300,"inV":38,"pro
 perties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":301,"inV":29,"properties":{"@class":"java.util.HashMap","weight":11}},{"@class":"java.util.HashMap","id":302,"inV":163,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":303,"inV":94,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":304,"inV":85,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":305,"inV":164,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":306,"inV":64,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":307,"inV":150,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":308,"inV":165,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":309,"inV":92,"properties":{"@class":"java.util.HashMap","weight":1}},{"@c
 lass":"java.util.HashMap","id":310,"inV":140,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":311,"inV":166,"properties":{"@class":"java.util.HashMap","weight":1}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7582,"inV":340}]],"writtenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7581,"inV":446}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",12],"value":"GOING DOWN THE ROAD FEELING BAD"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",14],"value":"cover"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",13],"value":293}]]}}
 {"@class":"java.util.HashMap","id":6,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":4,"outV":1,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2023,"outV":282,"properties":{"@class":"java.util.HashMap","weight":1}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":2406,"inV":293,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2407,"inV":96,"properties":{"@class":"java.util.HashMap","weight":1}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7782,"inV":351}]],"writtenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7781,"inV":527}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",15],"value":"MONA"}]],"songType":["java.util.ArrayList",[{"@class":"ja
 va.util.HashMap","id":["java.lang.Long",17],"value":"cover"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",16],"value":1}]]}}
 {"@class":"java.util.HashMap","id":7,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":2607,"outV":295,"properties":{"@class":"java.util.HashMap","weight":1}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":5,"inV":8,"properties":{"@class":"java.util.HashMap","weight":1}}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",18],"value":"WHERE HAVE THE HEROES GONE"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",20],"value":""}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",19],"value":0}]]}}
 {"@class":"java.util.HashMap","id":8,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":4705,"outV":111,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5,"outV":7,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5901,"outV":96,"properties":{"@class":"java.util.HashMap","weight":1}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":2976,"inV":302,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2977,"inV":96,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2978,"inV":72,"properties":{"@class":"java.util.HashMap","weight":1}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7814,"inV":351}]],"writtenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7813,
 "inV":674}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",21],"value":"OH BOY"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",23],"value":"cover"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",22],"value":2}]]}}
-{"@class":"java.util.HashMap","id":9,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":3776,"outV":3,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":65,"outV":46,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":1923,"outV":103,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5956,"outV":50,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3077,"outV":153,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5832,"outV":76,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1161,"outV":26,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":6667,"outV":12,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.Hash
 Map","id":2699,"outV":13,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":6539,"outV":55,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2578,"outV":57,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":787,"outV":122,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3542,"outV":201,"

<TRUNCATED>

[17/19] tinkerpop git commit: Merge branch 'pr-386'

Posted by sp...@apache.org.
Merge branch 'pr-386'

Conflicts:
	CHANGELOG.asciidoc
	gremlin-server/conf/gremlin-server-min.yaml


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/de139edd
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/de139edd
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/de139edd

Branch: refs/heads/master
Commit: de139edd78e7ecc85ffebca836410b0f60e3bb38
Parents: e50f716 115eb3c
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Aug 22 12:54:40 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Aug 22 12:54:40 2016 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |   2 +
 data/grateful-dead-typed.json                   | 422 +++++-----
 data/grateful-dead-v2d0-typed.json              | 808 +++++++++++++++++++
 data/grateful-dead-v2d0.json                    | 808 +++++++++++++++++++
 data/grateful-dead.json                         | 422 +++++-----
 data/tinkerpop-classic-v2d0-typed.json          |   6 +
 data/tinkerpop-classic-v2d0.json                |   6 +
 data/tinkerpop-crew-v2d0-typed.json             |   6 +
 data/tinkerpop-crew-v2d0.json                   |   6 +
 data/tinkerpop-modern-v2d0-typed.json           |   6 +
 data/tinkerpop-modern-v2d0.json                 |   6 +
 docs/src/reference/the-graph.asciidoc           | 139 +++-
 .../upgrade/release-3.2.x-incubating.asciidoc   |  20 +
 .../traversal/util/DefaultTraversalMetrics.java |   8 +
 .../process/traversal/util/MutableMetrics.java  |  12 +
 .../structure/io/graphson/GraphSONMapper.java   | 167 +++-
 .../structure/io/graphson/GraphSONModule.java   | 232 +++++-
 .../structure/io/graphson/GraphSONReader.java   |   8 +-
 .../io/graphson/GraphSONSerializerProvider.java |  15 +-
 .../io/graphson/GraphSONSerializers.java        | 465 -----------
 .../io/graphson/GraphSONSerializersV1d0.java    | 465 +++++++++++
 .../io/graphson/GraphSONSerializersV2d0.java    | 580 +++++++++++++
 .../structure/io/graphson/GraphSONTokens.java   |   3 +
 .../io/graphson/GraphSONTypeDeserializer.java   | 229 ++++++
 .../io/graphson/GraphSONTypeIdResolver.java     | 108 +++
 .../graphson/GraphSONTypeResolverBuilder.java   |  65 ++
 .../io/graphson/GraphSONTypeSerializer.java     | 197 +++++
 .../structure/io/graphson/GraphSONUtil.java     |  37 +
 .../structure/io/graphson/GraphSONVersion.java  |   3 +-
 .../structure/io/graphson/GraphSONWriter.java   |  11 +-
 .../io/graphson/JavaTimeSerializers.java        | 326 --------
 .../io/graphson/JavaTimeSerializersV1d0.java    | 326 ++++++++
 .../io/graphson/JavaTimeSerializersV2d0.java    | 323 ++++++++
 .../io/graphson/JavaUtilSerializers.java        |  86 --
 .../io/graphson/JavaUtilSerializersV1d0.java    |  86 ++
 .../io/graphson/JavaUtilSerializersV2d0.java    |  87 ++
 .../structure/io/graphson/JsonParserConcat.java |  83 ++
 .../io/graphson/LegacyGraphSONReader.java       |   4 +-
 .../io/graphson/TinkerPopJacksonModule.java     |  48 ++
 .../io/graphson/ToStringGraphSONSerializer.java |  41 +
 .../gremlin/structure/io/graphson/TypeInfo.java |  29 +
 .../structure/util/detached/DetachedEdge.java   |  11 +-
 .../structure/util/detached/DetachedVertex.java |  10 +-
 .../util/star/DirectionalStarGraph.java         |  39 +
 .../star/StarGraphGraphSONDeserializer.java     |  91 +++
 .../util/star/StarGraphGraphSONSerializer.java  | 250 ------
 .../star/StarGraphGraphSONSerializerV1d0.java   | 178 ++++
 .../star/StarGraphGraphSONSerializerV2d0.java   | 165 ++++
 .../GraphSONMapperEmbeddedTypeTest.java         |  55 +-
 .../io/graphson/GraphSONMapperTest.java         |  17 +-
 ...aphSONMapperV2d0PartialEmbeddedTypeTest.java | 344 ++++++++
 .../AbstractGraphSONMessageSerializerV2d0.java  | 248 ++++++
 .../GraphSONMessageSerializerGremlinV2d0.java   |  69 ++
 .../ser/GraphSONMessageSerializerV2d0.java      | 125 +++
 .../tinkerpop/gremlin/driver/ser/SerTokens.java |   1 +
 ...raphSONMessageSerializerGremlinTestV1d0.java | 334 ++++++++
 ...raphSONMessageSerializerGremlinTestV2d0.java | 341 ++++++++
 ...raphSONMessageSerializerGremlinV1d0Test.java | 334 --------
 .../ser/GraphSONMessageSerializerV1d0Test.java  |   9 +-
 .../ser/GraphSONMessageSerializerV2d0Test.java  | 507 ++++++++++++
 gremlin-server/conf/gremlin-server-classic.yaml |   2 +-
 gremlin-server/conf/gremlin-server-neo4j.yaml   |   1 +
 .../conf/gremlin-server-rest-modern.yaml        |   1 +
 .../conf/gremlin-server-rest-secure.yaml        |   1 +
 gremlin-server/conf/gremlin-server-secure.yaml  |   1 +
 gremlin-server/conf/gremlin-server-spark.yaml   |   1 +
 gremlin-server/conf/gremlin-server.yaml         |   1 +
 gremlin-server/data/sample.kryo                 | Bin 2416053 -> 2436147 bytes
 .../server/GremlinServerHttpIntegrateTest.java  |  22 +
 .../remote/gremlin-server-integration.yaml      |   1 +
 .../server/gremlin-server-integration.yaml      |   1 +
 .../io/graphson/grateful-dead-typed.json        | 422 +++++-----
 .../io/graphson/grateful-dead-v2d0-typed.json   | 808 +++++++++++++++++++
 .../io/graphson/grateful-dead-v2d0.json         | 808 +++++++++++++++++++
 .../structure/io/graphson/grateful-dead.json    | 422 +++++-----
 .../tinkerpop-classic-normalized-v2d0.json      |   6 +
 .../graphson/tinkerpop-classic-v2d0-typed.json  |   6 +
 .../io/graphson/tinkerpop-classic-v2d0.json     |   6 +
 .../io/graphson/tinkerpop-crew-v2d0-typed.json  |   6 +
 .../io/graphson/tinkerpop-crew-v2d0.json        |   6 +
 .../tinkerpop-modern-normalized-v2d0.json       |   6 +
 .../graphson/tinkerpop-modern-v2d0-typed.json   |   6 +
 .../io/graphson/tinkerpop-modern-v2d0.json      |   6 +
 tinkergraph-gremlin/pom.xml                     |   4 +-
 .../structure/TinkerIoRegistryV2d0.java         | 213 +++++
 .../structure/IoDataGenerationTest.java         | 115 ++-
 .../TinkerGraphGraphSONSerializerV2d0Test.java  | 557 +++++++++++++
 87 files changed, 10841 insertions(+), 2417 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/de139edd/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --cc CHANGELOG.asciidoc
index 8117c12,f4515b7..5f49bea
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@@ -26,7 -26,8 +26,9 @@@ image::https://raw.githubusercontent.co
  TinkerPop 3.2.2 (NOT OFFICIALLY RELEASED YET)
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  
 +* Included GraphSON as a default serializer (in addition to Gryo, which was already present) in Gremlin Server if none are defined
+ * Introduced GraphSON 2.0.
+ * Deprecated `embedTypes` on the builder for `GraphSONMapper`.
  * Defaulted the `gremlinPool` setting in Gremlin Server to be zero, which will instructs it to use `Runtime.availableProcessors()` for that settings.
  * Changed scope of log4j dependencies so that they would only be used in tests and the binary distributions of Gremlin Console and Server.
  * Deprecated `Io.Builder.registry()` in favor of the newly introduced `Io.Builder.onMapper()`.


[06/19] tinkerpop git commit: TINKERPOP-1274: GraphSON 2.0.

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-server/conf/gremlin-server-secure.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-secure.yaml b/gremlin-server/conf/gremlin-server-secure.yaml
index 3c26bcf..c053bc7 100644
--- a/gremlin-server/conf/gremlin-server-secure.yaml
+++ b/gremlin-server/conf/gremlin-server-secure.yaml
@@ -46,6 +46,7 @@ serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v2.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
 processors:
   - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-server/conf/gremlin-server-spark.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-spark.yaml b/gremlin-server/conf/gremlin-server-spark.yaml
index 3d339e8..5078bf2 100644
--- a/gremlin-server/conf/gremlin-server-spark.yaml
+++ b/gremlin-server/conf/gremlin-server-spark.yaml
@@ -59,6 +59,7 @@ serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v2.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
 processors:
   - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-server/conf/gremlin-server.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server.yaml b/gremlin-server/conf/gremlin-server.yaml
index 2f4e4f4..48c712a 100644
--- a/gremlin-server/conf/gremlin-server.yaml
+++ b/gremlin-server/conf/gremlin-server.yaml
@@ -36,6 +36,7 @@ serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v2.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
 processors:
   - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-server/data/sample.kryo
----------------------------------------------------------------------
diff --git a/gremlin-server/data/sample.kryo b/gremlin-server/data/sample.kryo
index eb64be6..38b201e 100644
Binary files a/gremlin-server/data/sample.kryo and b/gremlin-server/data/sample.kryo differ

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
index f8efda9..6d5fc7c 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.server;
 
+import org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0;
 import org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator;
 import org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer;
 import org.apache.http.Consts;
@@ -76,6 +77,12 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
                 deleteDirectory(new File("/tmp/neo4j"));
                 settings.graphs.put("graph", "conf/neo4j-empty.properties");
                 break;
+            case "should200OnPOSTWithGraphSON2d0AcceptHeaderDefaultResultToJson":
+                settings.serializers.clear();
+                final Settings.SerializerSettings serializerSettings = new Settings.SerializerSettings();
+                serializerSettings.className = GraphSONMessageSerializerV2d0.class.getName();
+                settings.serializers.add(serializerSettings);
+                break;
             case "should401OnGETWithNoAuthorizationHeader":
             case "should401OnPOSTWithNoAuthorizationHeader":
             case "should401OnGETWithBadAuthorizationHeader":
@@ -794,4 +801,19 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals(500, response.getStatusLine().getStatusCode());
         }
     }
+
+    @Test
+    public void should200OnPOSTWithGraphSON2d0AcceptHeaderDefaultResultToJson() throws Exception {
+        final CloseableHttpClient httpclient = HttpClients.createDefault();
+        final HttpPost httppost = new HttpPost("http://localhost:8182");
+        httppost.setEntity(new StringEntity("{\"gremlin\":\"1-1\"}", Consts.UTF_8));
+
+        try (final CloseableHttpResponse response = httpclient.execute(httppost)) {
+            assertEquals(200, response.getStatusLine().getStatusCode());
+            assertEquals("application/json", response.getEntity().getContentType().getValue());
+            final String json = EntityUtils.toString(response.getEntity());
+            final JsonNode node = mapper.readTree(json);
+            assertEquals(0, node.get("result").get("data").get(0).asInt());
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
index 8d20f54..1e4d35f 100644
--- a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
+++ b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
@@ -39,6 +39,7 @@ serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph, custom: [groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true}}
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }}
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph }}
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}
 processors:
   - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
index 9d92cd8..42a82e8 100644
--- a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
+++ b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
@@ -35,6 +35,7 @@ serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph, custom: [groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true}}
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }}
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph }}
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}
 processors:
   - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}


[12/19] tinkerpop git commit: TINKERPOP-1274: GraphSON 2.0.

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/data/grateful-dead.json
----------------------------------------------------------------------
diff --git a/data/grateful-dead.json b/data/grateful-dead.json
index cf01395..92c4d84 100644
--- a/data/grateful-dead.json
+++ b/data/grateful-dead.json
@@ -1,257 +1,257 @@
 {"id":1,"label":"song","inE":{"followedBy":[{"id":3059,"outV":153,"properties":{"weight":1}},{"id":276,"outV":5,"properties":{"weight":2}},{"id":3704,"outV":3,"properties":{"weight":2}},{"id":4383,"outV":62,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":0,"inV":2,"properties":{"weight":1}},{"id":1,"inV":3,"properties":{"weight":2}},{"id":2,"inV":4,"properties":{"weight":1}},{"id":3,"inV":5,"properties":{"weight":1}},{"id":4,"inV":6,"properties":{"weight":1}}],"sungBy":[{"id":7612,"inV":340}],"writtenBy":[{"id":7611,"inV":527}]},"properties":{"name":[{"id":0,"value":"HEY BO DIDDLEY"}],"songType":[{"id":2,"value":"cover"}],"performances":[{"id":1,"value":5}]}}
 {"id":2,"label":"song","inE":{"followedBy":[{"id":0,"outV":1,"properties":{"weight":1}},{"id":323,"outV":34,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":6190,"inV":123,"properties":{"weight":1}},{"id":6191,"inV":50,"properties":{"weight":1}}],"sungBy":[{"id":7666,"inV":525}],"writtenBy":[{"id":7665,"inV":525}]},"properties":{"name":[{"id":3,"value":"IM A MAN"}],"songType":[{"id":5,"value":"cover"}],"performances":[{"id":4,"value":1}]}}
-{"id":3,"label":"song","inE":{"followedBy":[{"id":1,"outV":1,"properties":{"weight":2}},{"id":2051,"outV":92,"properties":{"weight":4}},{"id":1412,"outV":83,"properties":{"weight":6}},{"id":6669,"outV":12,"properties":{"weight":1}},{"id":1166,"outV":26,"properties":{"weight":4}},{"id":6286,"outV":49,"properties":{"weight":1}},{"id":910,"outV":91,"properties":{"weight":3}},{"id":526,"outV":120,"properties":{"weight":2}},{"id":273,"outV":5,"properties":{"weight":40}},{"id":2194,"outV":235,"properties":{"weight":1}},{"id":1684,"outV":124,"properties":{"weight":1}},{"id":3221,"outV":63,"properties":{"weight":1}},{"id":1941,"outV":148,"properties":{"weight":4}},{"id":2712,"outV":13,"properties":{"weight":3}},{"id":6425,"outV":134,"properties":{"weight":2}},{"id":5787,"outV":76,"properties":{"weight":2}},{"id":5148,"outV":125,"properties":{"weight":4}},{"id":6692,"outV":141,"properties":{"weight":2}},{"id":6310,"outV":123,"properties":{"weight":1}},{"id":6448,"outV":187,"properties":{"wei
 ght":3}},{"id":2225,"outV":226,"properties":{"weight":1}},{"id":5042,"outV":209,"properties":{"weight":1}},{"id":4789,"outV":114,"properties":{"weight":2}},{"id":1464,"outV":81,"properties":{"weight":1}},{"id":2232,"outV":215,"properties":{"weight":1}},{"id":4665,"outV":154,"properties":{"weight":1}},{"id":2235,"outV":29,"properties":{"weight":163}},{"id":6208,"outV":319,"properties":{"weight":4}},{"id":706,"outV":206,"properties":{"weight":2}},{"id":835,"outV":171,"properties":{"weight":1}},{"id":5188,"outV":99,"properties":{"weight":1}},{"id":1862,"outV":94,"properties":{"weight":10}},{"id":6343,"outV":21,"properties":{"weight":1}},{"id":1735,"outV":82,"properties":{"weight":1}},{"id":4937,"outV":277,"properties":{"weight":1}},{"id":3276,"outV":160,"properties":{"weight":1}},{"id":3149,"outV":104,"properties":{"weight":1}},{"id":1358,"outV":130,"properties":{"weight":18}},{"id":4304,"outV":110,"properties":{"weight":1}},{"id":1105,"outV":59,"properties":{"weight":1}},{"id":722,"ou
 tV":80,"properties":{"weight":1}},{"id":4182,"outV":54,"properties":{"weight":1}},{"id":1499,"outV":164,"properties":{"weight":2}},{"id":2397,"outV":179,"properties":{"weight":1}},{"id":6623,"outV":127,"properties":{"weight":3}},{"id":351,"outV":178,"properties":{"weight":1}},{"id":2018,"outV":149,"properties":{"weight":1}},{"id":7011,"outV":89,"properties":{"weight":2}},{"id":5348,"outV":165,"properties":{"weight":1}},{"id":2278,"outV":25,"properties":{"weight":7}},{"id":1255,"outV":27,"properties":{"weight":2}},{"id":3048,"outV":153,"properties":{"weight":13}},{"id":5867,"outV":96,"properties":{"weight":116}},{"id":364,"outV":74,"properties":{"weight":2}},{"id":492,"outV":98,"properties":{"weight":1}},{"id":3948,"outV":138,"properties":{"weight":4}},{"id":4335,"outV":62,"properties":{"weight":1}},{"id":3312,"outV":252,"properties":{"weight":1}},{"id":5745,"outV":129,"properties":{"weight":1}},{"id":4596,"outV":85,"properties":{"weight":3}},{"id":5367,"outV":132,"properties":{"weig
 ht":1}},{"id":633,"outV":23,"properties":{"weight":1}},{"id":891,"outV":140,"properties":{"weight":2}},{"id":5375,"outV":69,"properties":{"weight":1}},{"id":6143,"outV":289,"properties":{"weight":3}}]},"outE":{"followedBy":[{"id":3712,"inV":27,"properties":{"weight":1}},{"id":3713,"inV":110,"properties":{"weight":4}},{"id":3714,"inV":215,"properties":{"weight":4}},{"id":3715,"inV":127,"properties":{"weight":10}},{"id":3716,"inV":83,"properties":{"weight":3}},{"id":3717,"inV":103,"properties":{"weight":2}},{"id":3718,"inV":68,"properties":{"weight":1}},{"id":3719,"inV":134,"properties":{"weight":2}},{"id":3720,"inV":25,"properties":{"weight":10}},{"id":3721,"inV":125,"properties":{"weight":54}},{"id":3722,"inV":130,"properties":{"weight":26}},{"id":3723,"inV":141,"properties":{"weight":2}},{"id":3724,"inV":145,"properties":{"weight":1}},{"id":3725,"inV":319,"properties":{"weight":3}},{"id":3726,"inV":12,"properties":{"weight":1}},{"id":3727,"inV":160,"properties":{"weight":37}},{"id"
 :3728,"inV":70,"properties":{"weight":2}},{"id":3729,"inV":123,"properties":{"weight":1}},{"id":3730,"inV":129,"properties":{"weight":1}},{"id":3731,"inV":30,"properties":{"weight":2}},{"id":3732,"inV":148,"properties":{"weight":1}},{"id":3733,"inV":211,"properties":{"weight":3}},{"id":3734,"inV":87,"properties":{"weight":13}},{"id":3735,"inV":164,"properties":{"weight":4}},{"id":3736,"inV":64,"properties":{"weight":2}},{"id":3737,"inV":320,"properties":{"weight":1}},{"id":3738,"inV":61,"properties":{"weight":3}},{"id":3739,"inV":210,"properties":{"weight":3}},{"id":3740,"inV":50,"properties":{"weight":7}},{"id":3741,"inV":128,"properties":{"weight":3}},{"id":3742,"inV":315,"properties":{"weight":1}},{"id":3743,"inV":261,"properties":{"weight":1}},{"id":3744,"inV":213,"properties":{"weight":13}},{"id":3745,"inV":72,"properties":{"weight":1}},{"id":3746,"inV":38,"properties":{"weight":4}},{"id":3747,"inV":204,"properties":{"weight":14}},{"id":3748,"inV":62,"properties":{"weight":2}},
 {"id":3749,"inV":150,"properties":{"weight":8}},{"id":3750,"inV":309,"properties":{"weight":1}},{"id":3751,"inV":131,"properties":{"weight":1}},{"id":3752,"inV":151,"properties":{"weight":1}},{"id":3753,"inV":321,"properties":{"weight":1}},{"id":3754,"inV":90,"properties":{"weight":2}},{"id":3755,"inV":82,"properties":{"weight":1}},{"id":3756,"inV":120,"properties":{"weight":1}},{"id":3757,"inV":46,"properties":{"weight":5}},{"id":3758,"inV":157,"properties":{"weight":5}},{"id":3759,"inV":59,"properties":{"weight":1}},{"id":3760,"inV":81,"properties":{"weight":1}},{"id":3761,"inV":86,"properties":{"weight":5}},{"id":3762,"inV":140,"properties":{"weight":1}},{"id":3763,"inV":201,"properties":{"weight":1}},{"id":3764,"inV":214,"properties":{"weight":1}},{"id":3765,"inV":185,"properties":{"weight":2}},{"id":3766,"inV":216,"properties":{"weight":1}},{"id":3767,"inV":217,"properties":{"weight":2}},{"id":3768,"inV":236,"properties":{"weight":5}},{"id":3769,"inV":193,"properties":{"weight"
 :1}},{"id":3770,"inV":79,"properties":{"weight":2}},{"id":3771,"inV":84,"properties":{"weight":1}},{"id":3772,"inV":23,"properties":{"weight":2}},{"id":3773,"inV":31,"properties":{"weight":2}},{"id":3774,"inV":240,"properties":{"weight":1}},{"id":3775,"inV":292,"properties":{"weight":1}},{"id":3776,"inV":9,"properties":{"weight":1}},{"id":3777,"inV":259,"properties":{"weight":1}},{"id":3694,"inV":5,"properties":{"weight":57}},{"id":3695,"inV":114,"properties":{"weight":30}},{"id":3696,"inV":74,"properties":{"weight":2}},{"id":3697,"inV":78,"properties":{"weight":3}},{"id":3698,"inV":10,"properties":{"weight":1}},{"id":3699,"inV":26,"properties":{"weight":4}},{"id":3700,"inV":153,"properties":{"weight":7}},{"id":3701,"inV":4,"properties":{"weight":4}},{"id":3702,"inV":317,"properties":{"weight":1}},{"id":3703,"inV":13,"properties":{"weight":5}},{"id":3704,"inV":1,"properties":{"weight":2}},{"id":3705,"inV":21,"properties":{"weight":2}},{"id":3706,"inV":57,"properties":{"weight":2}},{
 "id":3707,"inV":122,"properties":{"weight":2}},{"id":3708,"inV":318,"properties":{"weight":1}},{"id":3709,"inV":94,"properties":{"weight":26}},{"id":3710,"inV":96,"properties":{"weight":7}},{"id":3711,"inV":124,"properties":{"weight":15}}],"sungBy":[{"id":7808,"inV":351}],"writtenBy":[{"id":7807,"inV":671}]},"properties":{"name":[{"id":6,"value":"NOT FADE AWAY"}],"songType":[{"id":8,"value":"cover"}],"performances":[{"id":7,"value":531}]}}
-{"id":4,"label":"song","inE":{"followedBy":[{"id":128,"outV":97,"properties":{"weight":1}},{"id":1664,"outV":267,"properties":{"weight":1}},{"id":2,"outV":1,"properties":{"weight":1}},{"id":4099,"outV":48,"properties":{"weight":1}},{"id":1667,"outV":124,"properties":{"weight":15}},{"id":899,"outV":140,"properties":{"weight":1}},{"id":1156,"outV":26,"properties":{"weight":16}},{"id":773,"outV":122,"properties":{"weight":9}},{"id":6534,"outV":242,"properties":{"weight":1}},{"id":6664,"outV":12,"properties":{"weight":3}},{"id":1032,"outV":73,"properties":{"weight":1}},{"id":5129,"outV":222,"properties":{"weight":1}},{"id":5387,"outV":69,"properties":{"weight":1}},{"id":5517,"outV":43,"properties":{"weight":2}},{"id":5006,"outV":30,"properties":{"weight":2}},{"id":6030,"outV":204,"properties":{"weight":2}},{"id":2063,"outV":92,"properties":{"weight":1}},{"id":915,"outV":91,"properties":{"weight":2}},{"id":6940,"outV":84,"properties":{"weight":5}},{"id":2464,"outV":68,"properties":{"weig
 ht":1}},{"id":5795,"outV":76,"properties":{"weight":2}},{"id":3620,"outV":24,"properties":{"weight":2}},{"id":4772,"outV":114,"properties":{"weight":25}},{"id":2982,"outV":14,"properties":{"weight":3}},{"id":3367,"outV":184,"properties":{"weight":6}},{"id":2345,"outV":87,"properties":{"weight":2}},{"id":2861,"outV":101,"properties":{"weight":6}},{"id":1840,"outV":275,"properties":{"weight":1}},{"id":5425,"outV":102,"properties":{"weight":1}},{"id":180,"outV":70,"properties":{"weight":46}},{"id":2613,"outV":158,"properties":{"weight":1}},{"id":5562,"outV":162,"properties":{"weight":2}},{"id":5434,"outV":217,"properties":{"weight":1}},{"id":1469,"outV":81,"properties":{"weight":1}},{"id":446,"outV":38,"properties":{"weight":7}},{"id":2494,"outV":90,"properties":{"weight":3}},{"id":3266,"outV":160,"properties":{"weight":10}},{"id":326,"outV":34,"properties":{"weight":1}},{"id":6855,"outV":64,"properties":{"weight":12}},{"id":583,"outV":120,"properties":{"weight":2}},{"id":73,"outV":46,
 "properties":{"weight":4}},{"id":4425,"outV":212,"properties":{"weight":1}},{"id":4941,"outV":86,"properties":{"weight":2}},{"id":1613,"outV":210,"properties":{"weight":2}},{"id":6350,"outV":21,"properties":{"weight":1}},{"id":3535,"outV":201,"properties":{"weight":1}},{"id":980,"outV":11,"properties":{"weight":3}},{"id":5206,"outV":99,"properties":{"weight":1}},{"id":1494,"outV":164,"properties":{"weight":3}},{"id":5847,"outV":61,"properties":{"weight":2}},{"id":6490,"outV":187,"properties":{"weight":1}},{"id":2781,"outV":15,"properties":{"weight":4}},{"id":5600,"outV":42,"properties":{"weight":1}},{"id":353,"outV":74,"properties":{"weight":6}},{"id":5474,"outV":79,"properties":{"weight":1}},{"id":3811,"outV":88,"properties":{"weight":2}},{"id":1891,"outV":103,"properties":{"weight":19}},{"id":5989,"outV":50,"properties":{"weight":12}},{"id":4327,"outV":110,"properties":{"weight":2}},{"id":2538,"outV":57,"properties":{"weight":4}},{"id":3050,"outV":153,"properties":{"weight":13}},{
 "id":4970,"outV":236,"properties":{"weight":1}},{"id":2283,"outV":25,"properties":{"weight":9}},{"id":236,"outV":145,"properties":{"weight":1}},{"id":6126,"outV":72,"properties":{"weight":2}},{"id":5232,"outV":214,"properties":{"weight":2}},{"id":4594,"outV":85,"properties":{"weight":1}},{"id":4084,"outV":109,"properties":{"weight":1}},{"id":1652,"outV":213,"properties":{"weight":3}},{"id":3701,"outV":3,"properties":{"weight":4}},{"id":5621,"outV":22,"properties":{"weight":1}},{"id":629,"outV":23,"properties":{"weight":10}},{"id":7029,"outV":89,"properties":{"weight":1}},{"id":5238,"outV":32,"properties":{"weight":3}},{"id":2684,"outV":13,"properties":{"weight":9}},{"id":3325,"outV":268,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":5120,"inV":40,"properties":{"weight":5}},{"id":5121,"inV":33,"properties":{"weight":3}},{"id":5122,"inV":79,"properties":{"weight":1}},{"id":5123,"inV":292,"properties":{"weight":1}},{"id":5071,"inV":50,"properties":{"weight":9}},{"id":5072,"in
 V":12,"properties":{"weight":26}},{"id":5073,"inV":18,"properties":{"weight":4}},{"id":5074,"inV":24,"properties":{"weight":9}},{"id":5075,"inV":23,"properties":{"weight":63}},{"id":5076,"inV":13,"properties":{"weight":12}},{"id":5077,"inV":10,"properties":{"weight":4}},{"id":5078,"inV":11,"properties":{"weight":3}},{"id":5079,"inV":26,"properties":{"weight":18}},{"id":5080,"inV":22,"properties":{"weight":1}},{"id":5081,"inV":16,"properties":{"weight":2}},{"id":5082,"inV":49,"properties":{"weight":1}},{"id":5083,"inV":25,"properties":{"weight":2}},{"id":5084,"inV":51,"properties":{"weight":1}},{"id":5085,"inV":15,"properties":{"weight":1}},{"id":5086,"inV":112,"properties":{"weight":4}},{"id":5087,"inV":121,"properties":{"weight":1}},{"id":5088,"inV":32,"properties":{"weight":7}},{"id":5089,"inV":68,"properties":{"weight":2}},{"id":5090,"inV":120,"properties":{"weight":77}},{"id":5091,"inV":103,"properties":{"weight":1}},{"id":5092,"inV":42,"properties":{"weight":3}},{"id":5093,"inV
 ":85,"properties":{"weight":4}},{"id":5094,"inV":76,"properties":{"weight":5}},{"id":5095,"inV":181,"properties":{"weight":2}},{"id":5096,"inV":14,"properties":{"weight":2}},{"id":5097,"inV":122,"properties":{"weight":1}},{"id":5098,"inV":153,"properties":{"weight":3}},{"id":5099,"inV":96,"properties":{"weight":1}},{"id":5100,"inV":82,"properties":{"weight":3}},{"id":5101,"inV":110,"properties":{"weight":1}},{"id":5102,"inV":19,"properties":{"weight":6}},{"id":5103,"inV":129,"properties":{"weight":1}},{"id":5104,"inV":84,"properties":{"weight":1}},{"id":5105,"inV":88,"properties":{"weight":9}},{"id":5106,"inV":97,"properties":{"weight":1}},{"id":5107,"inV":114,"properties":{"weight":2}},{"id":5108,"inV":30,"properties":{"weight":8}},{"id":5109,"inV":31,"properties":{"weight":8}},{"id":5110,"inV":69,"properties":{"weight":4}},{"id":5111,"inV":127,"properties":{"weight":2}},{"id":5112,"inV":60,"properties":{"weight":1}},{"id":5113,"inV":39,"properties":{"weight":2}},{"id":5114,"inV":2
 1,"properties":{"weight":1}},{"id":5115,"inV":117,"properties":{"weight":1}},{"id":5116,"inV":78,"properties":{"weight":1}},{"id":5117,"inV":38,"properties":{"weight":1}},{"id":5118,"inV":169,"properties":{"weight":2}},{"id":5119,"inV":118,"properties":{"weight":1}}],"sungBy":[{"id":7064,"inV":340}],"writtenBy":[{"id":7063,"inV":339}]},"properties":{"name":[{"id":9,"value":"BERTHA"}],"songType":[{"id":11,"value":"original"}],"performances":[{"id":10,"value":394}]}}
-{"id":5,"label":"song","inE":{"followedBy":[{"id":962,"outV":67,"properties":{"weight":5}},{"id":194,"outV":70,"properties":{"weight":8}},{"id":3,"outV":1,"properties":{"weight":1}},{"id":5446,"outV":231,"properties":{"weight":5}},{"id":6344,"outV":21,"properties":{"weight":6}},{"id":6666,"outV":12,"properties":{"weight":1}},{"id":1738,"outV":82,"properties":{"weight":1}},{"id":1867,"outV":94,"properties":{"weight":15}},{"id":4300,"outV":110,"properties":{"weight":1}},{"id":847,"outV":171,"properties":{"weight":1}},{"id":2832,"outV":101,"properties":{"weight":3}},{"id":6032,"outV":115,"properties":{"weight":1}},{"id":1170,"outV":26,"properties":{"weight":1}},{"id":5330,"outV":238,"properties":{"weight":1}},{"id":1491,"outV":164,"properties":{"weight":3}},{"id":1429,"outV":83,"properties":{"weight":3}},{"id":3033,"outV":14,"properties":{"weight":1}},{"id":6298,"outV":49,"properties":{"weight":1}},{"id":1373,"outV":130,"properties":{"weight":11}},{"id":4447,"outV":113,"properties":{"w
 eight":1}},{"id":5151,"outV":125,"properties":{"weight":6}},{"id":6431,"outV":134,"properties":{"weight":2}},{"id":5343,"outV":165,"properties":{"weight":2}},{"id":1953,"outV":148,"properties":{"weight":10}},{"id":2274,"outV":25,"properties":{"weight":8}},{"id":1634,"outV":210,"properties":{"weight":1}},{"id":100,"outV":46,"properties":{"weight":1}},{"id":933,"outV":91,"properties":{"weight":1}},{"id":2021,"outV":149,"properties":{"weight":1}},{"id":6694,"outV":141,"properties":{"weight":2}},{"id":4009,"outV":225,"properties":{"weight":1}},{"id":682,"outV":219,"properties":{"weight":1}},{"id":3694,"outV":3,"properties":{"weight":57}},{"id":4718,"outV":186,"properties":{"weight":6}},{"id":3055,"outV":153,"properties":{"weight":9}},{"id":2736,"outV":13,"properties":{"weight":3}},{"id":2480,"outV":68,"properties":{"weight":1}},{"id":5426,"outV":102,"properties":{"weight":1}},{"id":6899,"outV":147,"properties":{"weight":1}},{"id":5879,"outV":96,"properties":{"weight":22}},{"id":6201,"ou
 tV":319,"properties":{"weight":2}},{"id":5370,"outV":132,"properties":{"weight":2}},{"id":2236,"outV":29,"properties":{"weight":5}},{"id":4604,"outV":85,"properties":{"weight":2}},{"id":700,"outV":206,"properties":{"weight":1}},{"id":5759,"outV":129,"properties":{"weight":6}}]},"outE":{"followedBy":[{"id":273,"inV":3,"properties":{"weight":40}},{"id":274,"inV":26,"properties":{"weight":3}},{"id":275,"inV":114,"properties":{"weight":40}},{"id":276,"inV":1,"properties":{"weight":2}},{"id":277,"inV":74,"properties":{"weight":3}},{"id":278,"inV":122,"properties":{"weight":3}},{"id":279,"inV":133,"properties":{"weight":2}},{"id":280,"inV":83,"properties":{"weight":1}},{"id":281,"inV":153,"properties":{"weight":5}},{"id":282,"inV":159,"properties":{"weight":1}},{"id":283,"inV":13,"properties":{"weight":3}},{"id":284,"inV":25,"properties":{"weight":19}},{"id":285,"inV":96,"properties":{"weight":10}},{"id":286,"inV":160,"properties":{"weight":2}},{"id":287,"inV":32,"properties":{"weight":1}
 },{"id":288,"inV":120,"properties":{"weight":16}},{"id":289,"inV":50,"properties":{"weight":1}},{"id":290,"inV":116,"properties":{"weight":1}},{"id":291,"inV":127,"properties":{"weight":6}},{"id":292,"inV":65,"properties":{"weight":1}},{"id":293,"inV":130,"properties":{"weight":3}},{"id":294,"inV":125,"properties":{"weight":5}},{"id":295,"inV":70,"properties":{"weight":13}},{"id":296,"inV":134,"properties":{"weight":1}},{"id":297,"inV":161,"properties":{"weight":1}},{"id":298,"inV":162,"properties":{"weight":1}},{"id":299,"inV":124,"properties":{"weight":3}},{"id":300,"inV":38,"properties":{"weight":1}},{"id":301,"inV":29,"properties":{"weight":11}},{"id":302,"inV":163,"properties":{"weight":1}},{"id":303,"inV":94,"properties":{"weight":5}},{"id":304,"inV":85,"properties":{"weight":1}},{"id":305,"inV":164,"properties":{"weight":6}},{"id":306,"inV":64,"properties":{"weight":1}},{"id":307,"inV":150,"properties":{"weight":1}},{"id":308,"inV":165,"properties":{"weight":7}},{"id":309,"in
 V":92,"properties":{"weight":1}},{"id":310,"inV":140,"properties":{"weight":1}},{"id":311,"inV":166,"properties":{"weight":1}}],"sungBy":[{"id":7582,"inV":340}],"writtenBy":[{"id":7581,"inV":446}]},"properties":{"name":[{"id":12,"value":"GOING DOWN THE ROAD FEELING BAD"}],"songType":[{"id":14,"value":"cover"}],"performances":[{"id":13,"value":293}]}}
+{"id":3,"label":"song","inE":{"followedBy":[{"id":1,"outV":1,"properties":{"weight":2}},{"id":2051,"outV":92,"properties":{"weight":4}},{"id":1412,"outV":83,"properties":{"weight":6}},{"id":6669,"outV":12,"properties":{"weight":1}},{"id":526,"outV":120,"properties":{"weight":2}},{"id":910,"outV":91,"properties":{"weight":3}},{"id":1166,"outV":26,"properties":{"weight":4}},{"id":6286,"outV":49,"properties":{"weight":1}},{"id":273,"outV":5,"properties":{"weight":40}},{"id":2194,"outV":235,"properties":{"weight":1}},{"id":1684,"outV":124,"properties":{"weight":1}},{"id":1941,"outV":148,"properties":{"weight":4}},{"id":3221,"outV":63,"properties":{"weight":1}},{"id":2712,"outV":13,"properties":{"weight":3}},{"id":6425,"outV":134,"properties":{"weight":2}},{"id":5787,"outV":76,"properties":{"weight":2}},{"id":5148,"outV":125,"properties":{"weight":4}},{"id":6692,"outV":141,"properties":{"weight":2}},{"id":6310,"outV":123,"properties":{"weight":1}},{"id":6448,"outV":187,"properties":{"wei
 ght":3}},{"id":2225,"outV":226,"properties":{"weight":1}},{"id":5042,"outV":209,"properties":{"weight":1}},{"id":4789,"outV":114,"properties":{"weight":2}},{"id":1464,"outV":81,"properties":{"weight":1}},{"id":2232,"outV":215,"properties":{"weight":1}},{"id":4665,"outV":154,"properties":{"weight":1}},{"id":2235,"outV":29,"properties":{"weight":163}},{"id":6208,"outV":319,"properties":{"weight":4}},{"id":706,"outV":206,"properties":{"weight":2}},{"id":835,"outV":171,"properties":{"weight":1}},{"id":5188,"outV":99,"properties":{"weight":1}},{"id":1862,"outV":94,"properties":{"weight":10}},{"id":1735,"outV":82,"properties":{"weight":1}},{"id":6343,"outV":21,"properties":{"weight":1}},{"id":4937,"outV":277,"properties":{"weight":1}},{"id":3276,"outV":160,"properties":{"weight":1}},{"id":3149,"outV":104,"properties":{"weight":1}},{"id":1358,"outV":130,"properties":{"weight":18}},{"id":4304,"outV":110,"properties":{"weight":1}},{"id":1105,"outV":59,"properties":{"weight":1}},{"id":722,"ou
 tV":80,"properties":{"weight":1}},{"id":4182,"outV":54,"properties":{"weight":1}},{"id":1499,"outV":164,"properties":{"weight":2}},{"id":2397,"outV":179,"properties":{"weight":1}},{"id":351,"outV":178,"properties":{"weight":1}},{"id":6623,"outV":127,"properties":{"weight":3}},{"id":2018,"outV":149,"properties":{"weight":1}},{"id":7011,"outV":89,"properties":{"weight":2}},{"id":5348,"outV":165,"properties":{"weight":1}},{"id":2278,"outV":25,"properties":{"weight":7}},{"id":1255,"outV":27,"properties":{"weight":2}},{"id":3048,"outV":153,"properties":{"weight":13}},{"id":5867,"outV":96,"properties":{"weight":116}},{"id":364,"outV":74,"properties":{"weight":2}},{"id":492,"outV":98,"properties":{"weight":1}},{"id":3948,"outV":138,"properties":{"weight":4}},{"id":4335,"outV":62,"properties":{"weight":1}},{"id":3312,"outV":252,"properties":{"weight":1}},{"id":5745,"outV":129,"properties":{"weight":1}},{"id":4596,"outV":85,"properties":{"weight":3}},{"id":5367,"outV":132,"properties":{"weig
 ht":1}},{"id":633,"outV":23,"properties":{"weight":1}},{"id":891,"outV":140,"properties":{"weight":2}},{"id":5375,"outV":69,"properties":{"weight":1}},{"id":6143,"outV":289,"properties":{"weight":3}}]},"outE":{"followedBy":[{"id":3712,"inV":27,"properties":{"weight":1}},{"id":3713,"inV":110,"properties":{"weight":4}},{"id":3714,"inV":215,"properties":{"weight":4}},{"id":3715,"inV":127,"properties":{"weight":10}},{"id":3716,"inV":83,"properties":{"weight":3}},{"id":3717,"inV":103,"properties":{"weight":2}},{"id":3718,"inV":68,"properties":{"weight":1}},{"id":3719,"inV":134,"properties":{"weight":2}},{"id":3720,"inV":25,"properties":{"weight":10}},{"id":3721,"inV":125,"properties":{"weight":54}},{"id":3722,"inV":130,"properties":{"weight":26}},{"id":3723,"inV":141,"properties":{"weight":2}},{"id":3724,"inV":145,"properties":{"weight":1}},{"id":3725,"inV":319,"properties":{"weight":3}},{"id":3726,"inV":12,"properties":{"weight":1}},{"id":3727,"inV":160,"properties":{"weight":37}},{"id"
 :3728,"inV":70,"properties":{"weight":2}},{"id":3729,"inV":123,"properties":{"weight":1}},{"id":3730,"inV":129,"properties":{"weight":1}},{"id":3731,"inV":30,"properties":{"weight":2}},{"id":3732,"inV":148,"properties":{"weight":1}},{"id":3733,"inV":211,"properties":{"weight":3}},{"id":3734,"inV":87,"properties":{"weight":13}},{"id":3735,"inV":164,"properties":{"weight":4}},{"id":3736,"inV":64,"properties":{"weight":2}},{"id":3737,"inV":320,"properties":{"weight":1}},{"id":3738,"inV":61,"properties":{"weight":3}},{"id":3739,"inV":210,"properties":{"weight":3}},{"id":3740,"inV":50,"properties":{"weight":7}},{"id":3741,"inV":128,"properties":{"weight":3}},{"id":3742,"inV":315,"properties":{"weight":1}},{"id":3743,"inV":261,"properties":{"weight":1}},{"id":3744,"inV":213,"properties":{"weight":13}},{"id":3745,"inV":72,"properties":{"weight":1}},{"id":3746,"inV":38,"properties":{"weight":4}},{"id":3747,"inV":204,"properties":{"weight":14}},{"id":3748,"inV":62,"properties":{"weight":2}},
 {"id":3749,"inV":150,"properties":{"weight":8}},{"id":3750,"inV":309,"properties":{"weight":1}},{"id":3751,"inV":131,"properties":{"weight":1}},{"id":3752,"inV":151,"properties":{"weight":1}},{"id":3753,"inV":321,"properties":{"weight":1}},{"id":3754,"inV":90,"properties":{"weight":2}},{"id":3755,"inV":82,"properties":{"weight":1}},{"id":3756,"inV":120,"properties":{"weight":1}},{"id":3757,"inV":46,"properties":{"weight":5}},{"id":3758,"inV":157,"properties":{"weight":5}},{"id":3759,"inV":59,"properties":{"weight":1}},{"id":3760,"inV":81,"properties":{"weight":1}},{"id":3761,"inV":86,"properties":{"weight":5}},{"id":3762,"inV":140,"properties":{"weight":1}},{"id":3763,"inV":201,"properties":{"weight":1}},{"id":3764,"inV":214,"properties":{"weight":1}},{"id":3765,"inV":185,"properties":{"weight":2}},{"id":3766,"inV":216,"properties":{"weight":1}},{"id":3767,"inV":217,"properties":{"weight":2}},{"id":3768,"inV":236,"properties":{"weight":5}},{"id":3769,"inV":193,"properties":{"weight"
 :1}},{"id":3770,"inV":79,"properties":{"weight":2}},{"id":3771,"inV":84,"properties":{"weight":1}},{"id":3772,"inV":23,"properties":{"weight":2}},{"id":3773,"inV":31,"properties":{"weight":2}},{"id":3774,"inV":240,"properties":{"weight":1}},{"id":3775,"inV":292,"properties":{"weight":1}},{"id":3776,"inV":9,"properties":{"weight":1}},{"id":3777,"inV":259,"properties":{"weight":1}},{"id":3694,"inV":5,"properties":{"weight":57}},{"id":3695,"inV":114,"properties":{"weight":30}},{"id":3696,"inV":74,"properties":{"weight":2}},{"id":3697,"inV":78,"properties":{"weight":3}},{"id":3698,"inV":10,"properties":{"weight":1}},{"id":3699,"inV":26,"properties":{"weight":4}},{"id":3700,"inV":153,"properties":{"weight":7}},{"id":3701,"inV":4,"properties":{"weight":4}},{"id":3702,"inV":317,"properties":{"weight":1}},{"id":3703,"inV":13,"properties":{"weight":5}},{"id":3704,"inV":1,"properties":{"weight":2}},{"id":3705,"inV":21,"properties":{"weight":2}},{"id":3706,"inV":57,"properties":{"weight":2}},{
 "id":3707,"inV":122,"properties":{"weight":2}},{"id":3708,"inV":318,"properties":{"weight":1}},{"id":3709,"inV":94,"properties":{"weight":26}},{"id":3710,"inV":96,"properties":{"weight":7}},{"id":3711,"inV":124,"properties":{"weight":15}}],"sungBy":[{"id":7808,"inV":351}],"writtenBy":[{"id":7807,"inV":671}]},"properties":{"name":[{"id":6,"value":"NOT FADE AWAY"}],"songType":[{"id":8,"value":"cover"}],"performances":[{"id":7,"value":531}]}}
+{"id":4,"label":"song","inE":{"followedBy":[{"id":128,"outV":97,"properties":{"weight":1}},{"id":1664,"outV":267,"properties":{"weight":1}},{"id":2,"outV":1,"properties":{"weight":1}},{"id":899,"outV":140,"properties":{"weight":1}},{"id":1667,"outV":124,"properties":{"weight":15}},{"id":4099,"outV":48,"properties":{"weight":1}},{"id":1156,"outV":26,"properties":{"weight":16}},{"id":773,"outV":122,"properties":{"weight":9}},{"id":6534,"outV":242,"properties":{"weight":1}},{"id":1032,"outV":73,"properties":{"weight":1}},{"id":6664,"outV":12,"properties":{"weight":3}},{"id":5129,"outV":222,"properties":{"weight":1}},{"id":5387,"outV":69,"properties":{"weight":1}},{"id":5517,"outV":43,"properties":{"weight":2}},{"id":5006,"outV":30,"properties":{"weight":2}},{"id":6030,"outV":204,"properties":{"weight":2}},{"id":2063,"outV":92,"properties":{"weight":1}},{"id":915,"outV":91,"properties":{"weight":2}},{"id":6940,"outV":84,"properties":{"weight":5}},{"id":2464,"outV":68,"properties":{"weig
 ht":1}},{"id":5795,"outV":76,"properties":{"weight":2}},{"id":3620,"outV":24,"properties":{"weight":2}},{"id":4772,"outV":114,"properties":{"weight":25}},{"id":2982,"outV":14,"properties":{"weight":3}},{"id":3367,"outV":184,"properties":{"weight":6}},{"id":2345,"outV":87,"properties":{"weight":2}},{"id":2861,"outV":101,"properties":{"weight":6}},{"id":1840,"outV":275,"properties":{"weight":1}},{"id":5425,"outV":102,"properties":{"weight":1}},{"id":180,"outV":70,"properties":{"weight":46}},{"id":2613,"outV":158,"properties":{"weight":1}},{"id":5434,"outV":217,"properties":{"weight":1}},{"id":5562,"outV":162,"properties":{"weight":2}},{"id":1469,"outV":81,"properties":{"weight":1}},{"id":446,"outV":38,"properties":{"weight":7}},{"id":2494,"outV":90,"properties":{"weight":3}},{"id":3266,"outV":160,"properties":{"weight":10}},{"id":326,"outV":34,"properties":{"weight":1}},{"id":583,"outV":120,"properties":{"weight":2}},{"id":6855,"outV":64,"properties":{"weight":12}},{"id":73,"outV":46,
 "properties":{"weight":4}},{"id":4425,"outV":212,"properties":{"weight":1}},{"id":1613,"outV":210,"properties":{"weight":2}},{"id":4941,"outV":86,"properties":{"weight":2}},{"id":6350,"outV":21,"properties":{"weight":1}},{"id":3535,"outV":201,"properties":{"weight":1}},{"id":980,"outV":11,"properties":{"weight":3}},{"id":1494,"outV":164,"properties":{"weight":3}},{"id":5206,"outV":99,"properties":{"weight":1}},{"id":5847,"outV":61,"properties":{"weight":2}},{"id":6490,"outV":187,"properties":{"weight":1}},{"id":2781,"outV":15,"properties":{"weight":4}},{"id":5600,"outV":42,"properties":{"weight":1}},{"id":353,"outV":74,"properties":{"weight":6}},{"id":5474,"outV":79,"properties":{"weight":1}},{"id":1891,"outV":103,"properties":{"weight":19}},{"id":3811,"outV":88,"properties":{"weight":2}},{"id":5989,"outV":50,"properties":{"weight":12}},{"id":4327,"outV":110,"properties":{"weight":2}},{"id":2538,"outV":57,"properties":{"weight":4}},{"id":3050,"outV":153,"properties":{"weight":13}},{
 "id":4970,"outV":236,"properties":{"weight":1}},{"id":2283,"outV":25,"properties":{"weight":9}},{"id":236,"outV":145,"properties":{"weight":1}},{"id":6126,"outV":72,"properties":{"weight":2}},{"id":5232,"outV":214,"properties":{"weight":2}},{"id":4594,"outV":85,"properties":{"weight":1}},{"id":1652,"outV":213,"properties":{"weight":3}},{"id":4084,"outV":109,"properties":{"weight":1}},{"id":629,"outV":23,"properties":{"weight":10}},{"id":3701,"outV":3,"properties":{"weight":4}},{"id":5621,"outV":22,"properties":{"weight":1}},{"id":7029,"outV":89,"properties":{"weight":1}},{"id":5238,"outV":32,"properties":{"weight":3}},{"id":2684,"outV":13,"properties":{"weight":9}},{"id":3325,"outV":268,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":5120,"inV":40,"properties":{"weight":5}},{"id":5121,"inV":33,"properties":{"weight":3}},{"id":5122,"inV":79,"properties":{"weight":1}},{"id":5123,"inV":292,"properties":{"weight":1}},{"id":5071,"inV":50,"properties":{"weight":9}},{"id":5072,"in
 V":12,"properties":{"weight":26}},{"id":5073,"inV":18,"properties":{"weight":4}},{"id":5074,"inV":24,"properties":{"weight":9}},{"id":5075,"inV":23,"properties":{"weight":63}},{"id":5076,"inV":13,"properties":{"weight":12}},{"id":5077,"inV":10,"properties":{"weight":4}},{"id":5078,"inV":11,"properties":{"weight":3}},{"id":5079,"inV":26,"properties":{"weight":18}},{"id":5080,"inV":22,"properties":{"weight":1}},{"id":5081,"inV":16,"properties":{"weight":2}},{"id":5082,"inV":49,"properties":{"weight":1}},{"id":5083,"inV":25,"properties":{"weight":2}},{"id":5084,"inV":51,"properties":{"weight":1}},{"id":5085,"inV":15,"properties":{"weight":1}},{"id":5086,"inV":112,"properties":{"weight":4}},{"id":5087,"inV":121,"properties":{"weight":1}},{"id":5088,"inV":32,"properties":{"weight":7}},{"id":5089,"inV":68,"properties":{"weight":2}},{"id":5090,"inV":120,"properties":{"weight":77}},{"id":5091,"inV":103,"properties":{"weight":1}},{"id":5092,"inV":42,"properties":{"weight":3}},{"id":5093,"inV
 ":85,"properties":{"weight":4}},{"id":5094,"inV":76,"properties":{"weight":5}},{"id":5095,"inV":181,"properties":{"weight":2}},{"id":5096,"inV":14,"properties":{"weight":2}},{"id":5097,"inV":122,"properties":{"weight":1}},{"id":5098,"inV":153,"properties":{"weight":3}},{"id":5099,"inV":96,"properties":{"weight":1}},{"id":5100,"inV":82,"properties":{"weight":3}},{"id":5101,"inV":110,"properties":{"weight":1}},{"id":5102,"inV":19,"properties":{"weight":6}},{"id":5103,"inV":129,"properties":{"weight":1}},{"id":5104,"inV":84,"properties":{"weight":1}},{"id":5105,"inV":88,"properties":{"weight":9}},{"id":5106,"inV":97,"properties":{"weight":1}},{"id":5107,"inV":114,"properties":{"weight":2}},{"id":5108,"inV":30,"properties":{"weight":8}},{"id":5109,"inV":31,"properties":{"weight":8}},{"id":5110,"inV":69,"properties":{"weight":4}},{"id":5111,"inV":127,"properties":{"weight":2}},{"id":5112,"inV":60,"properties":{"weight":1}},{"id":5113,"inV":39,"properties":{"weight":2}},{"id":5114,"inV":2
 1,"properties":{"weight":1}},{"id":5115,"inV":117,"properties":{"weight":1}},{"id":5116,"inV":78,"properties":{"weight":1}},{"id":5117,"inV":38,"properties":{"weight":1}},{"id":5118,"inV":169,"properties":{"weight":2}},{"id":5119,"inV":118,"properties":{"weight":1}}],"sungBy":[{"id":7064,"inV":340}],"writtenBy":[{"id":7063,"inV":339}]},"properties":{"name":[{"id":9,"value":"BERTHA"}],"songType":[{"id":11,"value":"original"}],"performances":[{"id":10,"value":394}]}}
+{"id":5,"label":"song","inE":{"followedBy":[{"id":194,"outV":70,"properties":{"weight":8}},{"id":962,"outV":67,"properties":{"weight":5}},{"id":3,"outV":1,"properties":{"weight":1}},{"id":5446,"outV":231,"properties":{"weight":5}},{"id":6344,"outV":21,"properties":{"weight":6}},{"id":1738,"outV":82,"properties":{"weight":1}},{"id":6666,"outV":12,"properties":{"weight":1}},{"id":1867,"outV":94,"properties":{"weight":15}},{"id":4300,"outV":110,"properties":{"weight":1}},{"id":847,"outV":171,"properties":{"weight":1}},{"id":2832,"outV":101,"properties":{"weight":3}},{"id":6032,"outV":115,"properties":{"weight":1}},{"id":1170,"outV":26,"properties":{"weight":1}},{"id":5330,"outV":238,"properties":{"weight":1}},{"id":1491,"outV":164,"properties":{"weight":3}},{"id":1429,"outV":83,"properties":{"weight":3}},{"id":3033,"outV":14,"properties":{"weight":1}},{"id":6298,"outV":49,"properties":{"weight":1}},{"id":1373,"outV":130,"properties":{"weight":11}},{"id":4447,"outV":113,"properties":{"w
 eight":1}},{"id":5151,"outV":125,"properties":{"weight":6}},{"id":5343,"outV":165,"properties":{"weight":2}},{"id":6431,"outV":134,"properties":{"weight":2}},{"id":1953,"outV":148,"properties":{"weight":10}},{"id":1634,"outV":210,"properties":{"weight":1}},{"id":2274,"outV":25,"properties":{"weight":8}},{"id":100,"outV":46,"properties":{"weight":1}},{"id":933,"outV":91,"properties":{"weight":1}},{"id":2021,"outV":149,"properties":{"weight":1}},{"id":6694,"outV":141,"properties":{"weight":2}},{"id":4009,"outV":225,"properties":{"weight":1}},{"id":682,"outV":219,"properties":{"weight":1}},{"id":3694,"outV":3,"properties":{"weight":57}},{"id":4718,"outV":186,"properties":{"weight":6}},{"id":3055,"outV":153,"properties":{"weight":9}},{"id":2480,"outV":68,"properties":{"weight":1}},{"id":2736,"outV":13,"properties":{"weight":3}},{"id":5426,"outV":102,"properties":{"weight":1}},{"id":6899,"outV":147,"properties":{"weight":1}},{"id":5879,"outV":96,"properties":{"weight":22}},{"id":6201,"ou
 tV":319,"properties":{"weight":2}},{"id":5370,"outV":132,"properties":{"weight":2}},{"id":700,"outV":206,"properties":{"weight":1}},{"id":2236,"outV":29,"properties":{"weight":5}},{"id":4604,"outV":85,"properties":{"weight":2}},{"id":5759,"outV":129,"properties":{"weight":6}}]},"outE":{"followedBy":[{"id":273,"inV":3,"properties":{"weight":40}},{"id":274,"inV":26,"properties":{"weight":3}},{"id":275,"inV":114,"properties":{"weight":40}},{"id":276,"inV":1,"properties":{"weight":2}},{"id":277,"inV":74,"properties":{"weight":3}},{"id":278,"inV":122,"properties":{"weight":3}},{"id":279,"inV":133,"properties":{"weight":2}},{"id":280,"inV":83,"properties":{"weight":1}},{"id":281,"inV":153,"properties":{"weight":5}},{"id":282,"inV":159,"properties":{"weight":1}},{"id":283,"inV":13,"properties":{"weight":3}},{"id":284,"inV":25,"properties":{"weight":19}},{"id":285,"inV":96,"properties":{"weight":10}},{"id":286,"inV":160,"properties":{"weight":2}},{"id":287,"inV":32,"properties":{"weight":1}
 },{"id":288,"inV":120,"properties":{"weight":16}},{"id":289,"inV":50,"properties":{"weight":1}},{"id":290,"inV":116,"properties":{"weight":1}},{"id":291,"inV":127,"properties":{"weight":6}},{"id":292,"inV":65,"properties":{"weight":1}},{"id":293,"inV":130,"properties":{"weight":3}},{"id":294,"inV":125,"properties":{"weight":5}},{"id":295,"inV":70,"properties":{"weight":13}},{"id":296,"inV":134,"properties":{"weight":1}},{"id":297,"inV":161,"properties":{"weight":1}},{"id":298,"inV":162,"properties":{"weight":1}},{"id":299,"inV":124,"properties":{"weight":3}},{"id":300,"inV":38,"properties":{"weight":1}},{"id":301,"inV":29,"properties":{"weight":11}},{"id":302,"inV":163,"properties":{"weight":1}},{"id":303,"inV":94,"properties":{"weight":5}},{"id":304,"inV":85,"properties":{"weight":1}},{"id":305,"inV":164,"properties":{"weight":6}},{"id":306,"inV":64,"properties":{"weight":1}},{"id":307,"inV":150,"properties":{"weight":1}},{"id":308,"inV":165,"properties":{"weight":7}},{"id":309,"in
 V":92,"properties":{"weight":1}},{"id":310,"inV":140,"properties":{"weight":1}},{"id":311,"inV":166,"properties":{"weight":1}}],"sungBy":[{"id":7582,"inV":340}],"writtenBy":[{"id":7581,"inV":446}]},"properties":{"name":[{"id":12,"value":"GOING DOWN THE ROAD FEELING BAD"}],"songType":[{"id":14,"value":"cover"}],"performances":[{"id":13,"value":293}]}}
 {"id":6,"label":"song","inE":{"followedBy":[{"id":4,"outV":1,"properties":{"weight":1}},{"id":2023,"outV":282,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":2406,"inV":293,"properties":{"weight":1}},{"id":2407,"inV":96,"properties":{"weight":1}}],"sungBy":[{"id":7782,"inV":351}],"writtenBy":[{"id":7781,"inV":527}]},"properties":{"name":[{"id":15,"value":"MONA"}],"songType":[{"id":17,"value":"cover"}],"performances":[{"id":16,"value":1}]}}
 {"id":7,"label":"song","inE":{"followedBy":[{"id":2607,"outV":295,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":5,"inV":8,"properties":{"weight":1}}]},"properties":{"name":[{"id":18,"value":"WHERE HAVE THE HEROES GONE"}],"songType":[{"id":20,"value":""}],"performances":[{"id":19,"value":0}]}}
 {"id":8,"label":"song","inE":{"followedBy":[{"id":4705,"outV":111,"properties":{"weight":1}},{"id":5,"outV":7,"properties":{"weight":1}},{"id":5901,"outV":96,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":2976,"inV":302,"properties":{"weight":1}},{"id":2977,"inV":96,"properties":{"weight":1}},{"id":2978,"inV":72,"properties":{"weight":1}}],"sungBy":[{"id":7814,"inV":351}],"writtenBy":[{"id":7813,"inV":674}]},"properties":{"name":[{"id":21,"value":"OH BOY"}],"songType":[{"id":23,"value":"cover"}],"performances":[{"id":22,"value":2}]}}
-{"id":9,"label":"song","inE":{"followedBy":[{"id":3776,"outV":3,"properties":{"weight":1}},{"id":65,"outV":46,"properties":{"weight":2}},{"id":1923,"outV":103,"properties":{"weight":3}},{"id":5956,"outV":50,"properties":{"weight":2}},{"id":3077,"outV":153,"properties":{"weight":2}},{"id":5832,"outV":76,"properties":{"weight":1}},{"id":1161,"outV":26,"properties":{"weight":8}},{"id":6667,"outV":12,"properties":{"weight":2}},{"id":2699,"outV":13,"properties":{"weight":3}},{"id":6539,"outV":55,"properties":{"weight":1}},{"id":2578,"outV":57,"properties":{"weight":2}},{"id":787,"outV":122,"properties":{"weight":3}},{"id":3542,"outV":201,"properties":{"weight":1}},{"id":2775,"outV":15,"properties":{"weight":5}},{"id":2840,"outV":101,"properties":{"weight":2}},{"id":4953,"outV":86,"properties":{"weight":2}},{"id":1572,"outV":18,"properties":{"weight":3}},{"id":229,"outV":70,"properties":{"weight":1}},{"id":4264,"outV":10,"properties":{"weight":1}},{"id":4969,"outV":236,"properties":{"weig
 ht":3}},{"id":3498,"outV":58,"properties":{"weight":2}},{"id":5226,"outV":216,"properties":{"weight":1}},{"id":5548,"outV":166,"properties":{"weight":1}},{"id":2990,"outV":14,"properties":{"weight":4}},{"id":3950,"outV":138,"properties":{"weight":1}},{"id":6776,"outV":39,"properties":{"weight":1}},{"id":2488,"outV":68,"properties":{"weight":1}},{"id":3641,"outV":24,"properties":{"weight":2}},{"id":1532,"outV":164,"properties":{"weight":2}},{"id":1853,"outV":94,"properties":{"weight":1}},{"id":638,"outV":23,"properties":{"weight":2}},{"id":6335,"outV":21,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":6,"inV":10,"properties":{"weight":3}},{"id":7,"inV":11,"properties":{"weight":2}},{"id":8,"inV":12,"properties":{"weight":3}},{"id":9,"inV":13,"properties":{"weight":6}},{"id":10,"inV":14,"properties":{"weight":3}},{"id":11,"inV":15,"properties":{"weight":3}},{"id":12,"inV":16,"properties":{"weight":1}},{"id":13,"inV":17,"properties":{"weight":1}},{"id":14,"inV":18,"properties"
 :{"weight":5}},{"id":15,"inV":19,"properties":{"weight":1}},{"id":16,"inV":20,"properties":{"weight":1}},{"id":17,"inV":21,"properties":{"weight":1}},{"id":18,"inV":22,"properties":{"weight":2}},{"id":19,"inV":23,"properties":{"weight":2}},{"id":20,"inV":24,"properties":{"weight":1}},{"id":21,"inV":25,"properties":{"weight":1}},{"id":22,"inV":26,"properties":{"weight":1}},{"id":23,"inV":27,"properties":{"weight":1}},{"id":24,"inV":28,"properties":{"weight":2}},{"id":25,"inV":29,"properties":{"weight":1}},{"id":26,"inV":30,"properties":{"weight":5}},{"id":27,"inV":31,"properties":{"weight":2}},{"id":28,"inV":32,"properties":{"weight":1}},{"id":29,"inV":33,"properties":{"weight":2}},{"id":30,"inV":34,"properties":{"weight":2}},{"id":31,"inV":35,"properties":{"weight":3}},{"id":32,"inV":36,"properties":{"weight":2}},{"id":33,"inV":37,"properties":{"weight":3}},{"id":34,"inV":38,"properties":{"weight":1}},{"id":35,"inV":39,"properties":{"weight":1}},{"id":36,"inV":40,"properties":{"weig
 ht":1}},{"id":37,"inV":41,"properties":{"weight":1}},{"id":38,"inV":42,"properties":{"weight":1}},{"id":39,"inV":43,"properties":{"weight":1}}],"sungBy":[{"id":7190,"inV":340}],"writtenBy":[{"id":7189,"inV":339}]},"properties":{"name":[{"id":24,"value":"HERE COMES SUNSHINE"}],"songType":[{"id":26,"value":"original"}],"performances":[{"id":25,"value":65}]}}
-{"id":10,"label":"song","inE":{"followedBy":[{"id":3841,"outV":60,"properties":{"weight":1}},{"id":1027,"outV":73,"properties":{"weight":5}},{"id":6,"outV":9,"properties":{"weight":3}},{"id":4103,"outV":48,"properties":{"weight":5}},{"id":6279,"outV":49,"properties":{"weight":1}},{"id":3335,"outV":155,"properties":{"weight":1}},{"id":4233,"outV":52,"properties":{"weight":1}},{"id":4878,"outV":100,"properties":{"weight":19}},{"id":5264,"outV":32,"properties":{"weight":2}},{"id":2196,"outV":75,"properties":{"weight":4}},{"id":151,"outV":108,"properties":{"weight":3}},{"id":1571,"outV":18,"properties":{"weight":5}},{"id":3619,"outV":24,"properties":{"weight":2}},{"id":3237,"outV":63,"properties":{"weight":3}},{"id":4647,"outV":154,"properties":{"weight":1}},{"id":4521,"outV":105,"properties":{"weight":3}},{"id":1195,"outV":26,"properties":{"weight":1}},{"id":6956,"outV":84,"properties":{"weight":1}},{"id":6444,"outV":187,"properties":{"weight":9}},{"id":687,"outV":157,"properties":{"we
 ight":1}},{"id":4784,"outV":114,"properties":{"weight":1}},{"id":6064,"outV":115,"properties":{"weight":1}},{"id":3890,"outV":51,"properties":{"weight":9}},{"id":1714,"outV":82,"properties":{"weight":3}},{"id":55,"outV":46,"properties":{"weight":1}},{"id":5175,"outV":71,"properties":{"weight":1}},{"id":1337,"outV":31,"properties":{"weight":1}},{"id":4155,"outV":54,"properties":{"weight":6}},{"id":1083,"outV":59,"properties":{"weight":10}},{"id":6077,"outV":72,"properties":{"weight":5}},{"id":5441,"outV":239,"properties":{"weight":1}},{"id":1987,"outV":152,"properties":{"weight":2}},{"id":2116,"outV":17,"properties":{"weight":7}},{"id":1860,"outV":94,"properties":{"weight":1}},{"id":3269,"outV":160,"properties":{"weight":2}},{"id":454,"outV":38,"properties":{"weight":1}},{"id":3142,"outV":104,"properties":{"weight":4}},{"id":2505,"outV":57,"properties":{"weight":12}},{"id":6859,"outV":64,"properties":{"weight":1}},{"id":6603,"outV":127,"properties":{"weight":4}},{"id":717,"outV":80,"
 properties":{"weight":9}},{"id":1360,"outV":130,"properties":{"weight":2}},{"id":3026,"outV":14,"properties":{"weight":1}},{"id":5972,"outV":50,"properties":{"weight":1}},{"id":5077,"outV":4,"properties":{"weight":4}},{"id":2392,"outV":87,"properties":{"weight":1}},{"id":1250,"outV":27,"properties":{"weight":10}},{"id":4706,"outV":111,"properties":{"weight":3}},{"id":6755,"outV":53,"properties":{"weight":1}},{"id":2917,"outV":78,"properties":{"weight":10}},{"id":485,"outV":98,"properties":{"weight":4}},{"id":3559,"outV":56,"properties":{"weight":16}},{"id":3436,"outV":58,"properties":{"weight":10}},{"id":3820,"outV":88,"properties":{"weight":1}},{"id":4463,"outV":202,"properties":{"weight":4}},{"id":6256,"outV":117,"properties":{"weight":1}},{"id":880,"outV":189,"properties":{"weight":1}},{"id":3698,"outV":3,"properties":{"weight":1}},{"id":2291,"outV":25,"properties":{"weight":1}},{"id":2035,"outV":180,"properties":{"weight":1}},{"id":3317,"outV":252,"properties":{"weight":1}},{"id
 ":2806,"outV":15,"properties":{"weight":2}},{"id":2427,"outV":68,"properties":{"weight":2}},{"id":6782,"outV":39,"properties":{"weight":4}},{"id":4351,"outV":62,"properties":{"weight":2}}]},"outE":{"followedBy":[{"id":4235,"inV":56,"properties":{"weight":13}},{"id":4236,"inV":27,"properties":{"weight":7}},{"id":4237,"inV":58,"properties":{"weight":11}},{"id":4238,"inV":80,"properties":{"weight":6}},{"id":4239,"inV":59,"properties":{"weight":9}},{"id":4240,"inV":100,"properties":{"weight":21}},{"id":4241,"inV":104,"properties":{"weight":5}},{"id":4242,"inV":50,"properties":{"weight":2}},{"id":4243,"inV":48,"properties":{"weight":8}},{"id":4244,"inV":54,"properties":{"weight":13}},{"id":4245,"inV":19,"properties":{"weight":9}},{"id":4246,"inV":72,"properties":{"weight":4}},{"id":4247,"inV":14,"properties":{"weight":1}},{"id":4248,"inV":122,"properties":{"weight":2}},{"id":4249,"inV":235,"properties":{"weight":1}},{"id":4250,"inV":218,"properties":{"weight":1}},{"id":4251,"inV":252,"pr
 operties":{"weight":1}},{"id":4252,"inV":89,"properties":{"weight":3}},{"id":4253,"inV":57,"properties":{"weight":12}},{"id":4254,"inV":49,"properties":{"weight":3}},{"id":4255,"inV":94,"properties":{"weight":3}},{"id":4256,"inV":153,"properties":{"weight":1}},{"id":4257,"inV":13,"properties":{"weight":1}},{"id":4258,"inV":160,"properties":{"weight":1}},{"id":4259,"inV":51,"properties":{"weight":10}},{"id":4260,"inV":18,"properties":{"weight":3}},{"id":4261,"inV":202,"properties":{"weight":4}},{"id":4262,"inV":17,"properties":{"weight":5}},{"id":4263,"inV":46,"properties":{"weight":1}},{"id":4264,"inV":9,"properties":{"weight":1}},{"id":4265,"inV":55,"properties":{"weight":1}},{"id":4266,"inV":125,"properties":{"weight":1}},{"id":4267,"inV":69,"properties":{"weight":2}},{"id":4268,"inV":98,"properties":{"weight":8}},{"id":4269,"inV":82,"properties":{"weight":4}},{"id":4270,"inV":154,"properties":{"weight":1}},{"id":4271,"inV":105,"properties":{"weight":7}},{"id":4272,"inV":112,"prop
 erties":{"weight":2}},{"id":4273,"inV":109,"properties":{"weight":1}},{"id":4274,"inV":42,"properties":{"weight":2}},{"id":4275,"inV":121,"properties":{"weight":1}},{"id":4276,"inV":73,"properties":{"weight":5}},{"id":4277,"inV":106,"properties":{"weight":1}},{"id":4278,"inV":116,"properties":{"weight":1}},{"id":4279,"inV":68,"properties":{"weight":2}},{"id":4280,"inV":152,"properties":{"weight":1}},{"id":4281,"inV":23,"properties":{"weight":6}},{"id":4282,"inV":88,"properties":{"weight":1}},{"id":4283,"inV":39,"properties":{"weight":4}},{"id":4284,"inV":12,"properties":{"weight":1}},{"id":4285,"inV":111,"properties":{"weight":1}},{"id":4286,"inV":99,"properties":{"weight":1}},{"id":4287,"inV":87,"properties":{"weight":2}},{"id":4288,"inV":108,"properties":{"weight":2}},{"id":4289,"inV":53,"properties":{"weight":4}},{"id":4290,"inV":26,"properties":{"weight":5}},{"id":4291,"inV":117,"properties":{"weight":2}},{"id":4292,"inV":115,"properties":{"weight":2}},{"id":4293,"inV":63,"prope
 rties":{"weight":3}},{"id":4294,"inV":103,"properties":{"weight":1}}],"sungBy":[{"id":7460,"inV":351}],"writtenBy":[{"id":7459,"inV":471}]},"properties":{"name":[{"id":27,"value":"BEAT IT ON DOWN THE LINE"}],"songType":[{"id":29,"value":"cover"}],"performances":[{"id":28,"value":325}]}}
-{"id":11,"label":"song","inE":{"followedBy":[{"id":1088,"outV":59,"properties":{"weight":14}},{"id":6273,"outV":49,"properties":{"weight":2}},{"id":1989,"outV":152,"properties":{"weight":2}},{"id":7,"outV":9,"properties":{"weight":2}},{"id":4552,"outV":105,"properties":{"weight":3}},{"id":521,"outV":205,"properties":{"weight":1}},{"id":714,"outV":80,"properties":{"weight":5}},{"id":3146,"outV":104,"properties":{"weight":3}},{"id":4876,"outV":100,"properties":{"weight":2}},{"id":2190,"outV":235,"properties":{"weight":1}},{"id":4496,"outV":202,"properties":{"weight":1}},{"id":2513,"outV":57,"properties":{"weight":4}},{"id":4053,"outV":173,"properties":{"weight":1}},{"id":5078,"outV":4,"properties":{"weight":3}},{"id":1309,"outV":27,"properties":{"weight":5}},{"id":5025,"outV":30,"properties":{"weight":1}},{"id":4769,"outV":114,"properties":{"weight":1}},{"id":3554,"outV":56,"properties":{"weight":7}},{"id":1064,"outV":73,"properties":{"weight":1}},{"id":2920,"outV":78,"properties":{"w
 eight":2}},{"id":6056,"outV":115,"properties":{"weight":2}},{"id":41,"outV":46,"properties":{"weight":2}},{"id":3434,"outV":58,"properties":{"weight":5}},{"id":6442,"outV":187,"properties":{"weight":7}},{"id":1775,"outV":234,"properties":{"weight":4}},{"id":3888,"outV":51,"properties":{"weight":1}},{"id":626,"outV":23,"properties":{"weight":1}},{"id":6772,"outV":39,"properties":{"weight":1}},{"id":1396,"outV":190,"properties":{"weight":1}},{"id":4020,"outV":191,"properties":{"weight":1}},{"id":3637,"outV":24,"properties":{"weight":2}},{"id":6072,"outV":72,"properties":{"weight":5}},{"id":4157,"outV":54,"properties":{"weight":2}}]},"outE":{"followedBy":[{"id":972,"inV":57,"properties":{"weight":4}},{"id":973,"inV":59,"properties":{"weight":3}},{"id":974,"inV":53,"properties":{"weight":4}},{"id":975,"inV":54,"properties":{"weight":15}},{"id":976,"inV":56,"properties":{"weight":3}},{"id":977,"inV":48,"properties":{"weight":3}},{"id":978,"inV":72,"properties":{"weight":4}},{"id":979,"in
 V":19,"properties":{"weight":9}},{"id":980,"inV":4,"properties":{"weight":3}},{"id":981,"inV":58,"properties":{"weight":6}},{"id":982,"inV":46,"properties":{"weight":1}},{"id":983,"inV":234,"properties":{"weight":7}},{"id":984,"inV":235,"properties":{"weight":2}},{"id":985,"inV":207,"properties":{"weight":4}},{"id":986,"inV":39,"properties":{"weight":3}},{"id":987,"inV":50,"properties":{"weight":1}},{"id":988,"inV":104,"properties":{"weight":2}},{"id":989,"inV":49,"properties":{"weight":1}},{"id":990,"inV":17,"properties":{"weight":3}},{"id":991,"inV":100,"properties":{"weight":1}},{"id":992,"inV":24,"properties":{"weight":1}},{"id":993,"inV":170,"properties":{"weight":2}},{"id":994,"inV":73,"properties":{"weight":1}},{"id":995,"inV":173,"properties":{"weight":1}},{"id":996,"inV":236,"properties":{"weight":1}},{"id":997,"inV":202,"properties":{"weight":3}},{"id":998,"inV":80,"properties":{"weight":2}},{"id":999,"inV":115,"properties":{"weight":4}},{"id":1000,"inV":105,"properties":{
 "weight":1}}],"sungBy":[{"id":7072,"inV":351}],"writtenBy":[{"id":7071,"inV":350}]},"properties":{"name":[{"id":30,"value":"BLACK THROATED WIND"}],"songType":[{"id":32,"value":"original"}],"performances":[{"id":31,"value":158}]}}
-{"id":12,"label":"song","inE":{"followedBy":[{"id":3072,"outV":153,"properties":{"weight":4}},{"id":2433,"outV":68,"properties":{"weight":1}},{"id":1410,"outV":83,"properties":{"weight":1}},{"id":4227,"outV":52,"properties":{"weight":3}},{"id":3331,"outV":155,"properties":{"weight":2}},{"id":1028,"outV":73,"properties":{"weight":12}},{"id":4102,"outV":48,"properties":{"weight":33}},{"id":8,"outV":9,"properties":{"weight":3}},{"id":6281,"outV":49,"properties":{"weight":2}},{"id":652,"outV":23,"properties":{"weight":2}},{"id":5388,"outV":69,"properties":{"weight":1}},{"id":525,"outV":120,"properties":{"weight":1}},{"id":3726,"outV":3,"properties":{"weight":1}},{"id":3855,"outV":60,"properties":{"weight":1}},{"id":783,"outV":122,"properties":{"weight":1}},{"id":3986,"outV":106,"properties":{"weight":1}},{"id":1938,"outV":148,"properties":{"weight":1}},{"id":1172,"outV":26,"properties":{"weight":4}},{"id":916,"outV":91,"properties":{"weight":1}},{"id":6935,"outV":84,"properties":{"weigh
 t":5}},{"id":5017,"outV":30,"properties":{"weight":1}},{"id":3225,"outV":63,"properties":{"weight":4}},{"id":2203,"outV":75,"properties":{"weight":3}},{"id":155,"outV":108,"properties":{"weight":6}},{"id":4893,"outV":100,"properties":{"weight":7}},{"id":4640,"outV":154,"properties":{"weight":10}},{"id":5665,"outV":169,"properties":{"weight":1}},{"id":5286,"outV":32,"properties":{"weight":4}},{"id":2598,"outV":112,"properties":{"weight":7}},{"id":1702,"outV":124,"properties":{"weight":1}},{"id":3879,"outV":51,"properties":{"weight":12}},{"id":4007,"outV":225,"properties":{"weight":1}},{"id":424,"outV":38,"properties":{"weight":5}},{"id":5034,"outV":47,"properties":{"weight":1}},{"id":4522,"outV":105,"properties":{"weight":12}},{"id":4779,"outV":114,"properties":{"weight":3}},{"id":6576,"outV":116,"properties":{"weight":1}},{"id":6835,"outV":64,"properties":{"weight":1}},{"id":6455,"outV":187,"properties":{"weight":12}},{"id":5304,"outV":170,"properties":{"weight":2}},{"id":824,"outV"
 :171,"properties":{"weight":1}},{"id":6074,"outV":72,"properties":{"weight":4}},{"id":1722,"outV":82,"properties":{"weight":1}},{"id":4284,"outV":10,"properties":{"weight":1}},{"id":2109,"outV":17,"properties":{"weight":24}},{"id":703,"outV":206,"properties":{"weight":2}},{"id":5952,"outV":50,"properties":{"weight":7}},{"id":5440,"outV":239,"properties":{"weight":2}},{"id":1858,"outV":94,"properties":{"weight":2}},{"id":1347,"outV":31,"properties":{"weight":1}},{"id":1605,"outV":18,"properties":{"weight":1}},{"id":4165,"outV":54,"properties":{"weight":17}},{"id":3654,"outV":24,"properties":{"weight":3}},{"id":6598,"outV":127,"properties":{"weight":1}},{"id":4038,"outV":173,"properties":{"weight":1}},{"id":3271,"outV":160,"properties":{"weight":1}},{"id":3527,"outV":223,"properties":{"weight":1}},{"id":1096,"outV":59,"properties":{"weight":26}},{"id":3144,"outV":104,"properties":{"weight":24}},{"id":1993,"outV":152,"properties":{"weight":2}},{"id":6985,"outV":175,"properties":{"weigh
 t":1}},{"id":6730,"outV":53,"properties":{"weight":4}},{"id":3019,"outV":14,"properties":{"weight":1}},{"id":3788,"outV":168,"properties":{"weight":1}},{"id":5072,"outV":4,"properties":{"weight":26}},{"id":2515,"outV":57,"properties":{"weight":3}},{"id":1365,"outV":130,"properties":{"weight":2}},{"id":2647,"outV":137,"properties":{"weight":1}},{"id":730,"outV":80,"properties":{"weight":12}},{"id":2780,"outV":15,"properties":{"weight":3}},{"id":3810,"outV":88,"properties":{"weight":6}},{"id":482,"outV":98,"properties":{"weight":8}},{"id":7013,"outV":89,"properties":{"weight":1}},{"id":4072,"outV":109,"properties":{"weight":1}},{"id":2281,"outV":25,"properties":{"weight":2}},{"id":2668,"outV":13,"properties":{"weight":3}},{"id":3565,"outV":56,"properties":{"weight":9}},{"id":1262,"outV":27,"properties":{"weight":17}},{"id":2031,"outV":180,"properties":{"weight":1}},{"id":6769,"outV":39,"properties":{"weight":2}},{"id":1779,"outV":234,"properties":{"weight":1}},{"id":4468,"outV":202,"p
 roperties":{"weight":4}},{"id":1909,"outV":103,"properties":{"weight":1}},{"id":3446,"outV":58,"properties":{"weight":4}},{"id":2934,"outV":78,"properties":{"weight":1}},{"id":381,"outV":74,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":6656,"inV":49,"properties":{"weight":9}},{"id":6657,"inV":19,"properties":{"weight":3}},{"id":6658,"inV":27,"properties":{"weight":9}},{"id":6659,"inV":252,"properties":{"weight":1}},{"id":6660,"inV":206,"properties":{"weight":1}},{"id":6661,"inV":89,"properties":{"weight":4}},{"id":6662,"inV":160,"properties":{"weight":1}},{"id":6663,"inV":15,"properties":{"weight":167}},{"id":6664,"inV":4,"properties":{"weight":3}},{"id":6665,"inV":202,"properties":{"weight":2}},{"id":6666,"inV":5,"properties":{"weight":1}},{"id":6667,"inV":9,"properties":{"weight":2}},{"id":6668,"inV":83,"properties":{"weight":3}},{"id":6669,"inV":3,"properties":{"weight":1}},{"id":6670,"inV":52,"properties":{"weight":1}},{"id":6671,"inV":25,"properties":{"weight":1}},{"
 id":6672,"inV":46,"properties":{"weight":1}},{"id":6673,"inV":123,"properties":{"weight":2}},{"id":6674,"inV":51,"properties":{"weight":4}},{"id":6675,"inV":17,"properties":{"weight":3}},{"id":6676,"inV":56,"properties":{"weight":5}},{"id":6677,"inV":98,"properties":{"weight":5}},{"id":6678,"inV":104,"properties":{"weight":4}},{"id":6679,"inV":69,"properties":{"weight":3}},{"id":6680,"inV":170,"properties":{"weight":2}},{"id":6681,"inV":82,"properties":{"weight":1}},{"id":6682,"inV":80,"properties":{"weight":2}},{"id":6683,"inV":215,"properties":{"weight":1}},{"id":6684,"inV":48,"properties":{"weight":1}},{"id":6685,"inV":14,"properties":{"weight":3}},{"id":6686,"inV":50,"properties":{"weight":2}},{"id":6687,"inV":24,"properties":{"weight":83}},{"id":6688,"inV":18,"properties":{"weight":1}},{"id":6689,"inV":39,"properties":{"weight":6}},{"id":6690,"inV":105,"properties":{"weight":1}},{"id":6691,"inV":131,"properties":{"weight":14}},{"id":6645,"inV":72,"properties":{"weight":7}},{"id
 ":6646,"inV":58,"properties":{"weight":7}},{"id":6647,"inV":57,"properties":{"weight":6}},{"id":6648,"inV":54,"properties":{"weight":8}},{"id":6649,"inV":59,"properties":{"weight":14}},{"id":6650,"inV":100,"properties":{"weight":7}},{"id":6651,"inV":53,"properties":{"weight":4}},{"id":6652,"inV":148,"properties":{"weight":1}},{"id":6653,"inV":218,"properties":{"weight":2}},{"id":6654,"inV":235,"properties":{"weight":2}},{"id":6655,"inV":130,"properties":{"weight":1}}],"sungBy":[{"id":7776,"inV":351}],"writtenBy":[{"id":7775,"inV":659}]},"properties":{"name":[{"id":33,"value":"ME AND MY UNCLE"}],"songType":[{"id":35,"value":"cover"}],"performances":[{"id":34,"value":616}]}}
-{"id":13,"label":"song","inE":{"followedBy":[{"id":4865,"outV":35,"properties":{"weight":4}},{"id":1026,"outV":73,"properties":{"weight":1}},{"id":3330,"outV":155,"properties":{"weight":2}},{"id":5636,"outV":22,"properties":{"weight":1}},{"id":775,"outV":122,"properties":{"weight":1}},{"id":6407,"outV":134,"properties":{"weight":24}},{"id":1799,"outV":196,"properties":{"weight":2}},{"id":9,"outV":9,"properties":{"weight":6}},{"id":4874,"outV":100,"properties":{"weight":6}},{"id":4108,"outV":48,"properties":{"weight":3}},{"id":5132,"outV":222,"properties":{"weight":1}},{"id":2830,"outV":101,"properties":{"weight":8}},{"id":3857,"outV":60,"properties":{"weight":35}},{"id":6931,"outV":84,"properties":{"weight":7}},{"id":6165,"outV":36,"properties":{"weight":1}},{"id":533,"outV":120,"properties":{"weight":1}},{"id":5142,"outV":125,"properties":{"weight":11}},{"id":4630,"outV":154,"properties":{"weight":8}},{"id":283,"outV":5,"properties":{"weight":3}},{"id":1567,"outV":18,"properties":{
 "weight":3}},{"id":1823,"outV":41,"properties":{"weight":4}},{"id":3359,"outV":184,"properties":{"weight":3}},{"id":3617,"outV":24,"properties":{"weight":1}},{"id":3108,"outV":153,"properties":{"weight":1}},{"id":3878,"outV":51,"properties":{"weight":6}},{"id":2347,"outV":87,"properties":{"weight":8}},{"id":6443,"outV":187,"properties":{"weight":47}},{"id":6700,"outV":141,"properties":{"weight":4}},{"id":5682,"outV":167,"properties":{"weight":1}},{"id":53,"outV":46,"properties":{"weight":4}},{"id":5943,"outV":50,"properties":{"weight":1}},{"id":823,"outV":171,"properties":{"weight":24}},{"id":4151,"outV":218,"properties":{"weight":2}},{"id":2617,"outV":158,"properties":{"weight":1}},{"id":3386,"outV":177,"properties":{"weight":2}},{"id":4411,"outV":327,"properties":{"weight":1}},{"id":1852,"outV":94,"properties":{"weight":4}},{"id":6206,"outV":319,"properties":{"weight":1}},{"id":2111,"outV":17,"properties":{"weight":4}},{"id":4159,"outV":54,"properties":{"weight":16}},{"id":1087,"o
 utV":59,"properties":{"weight":5}},{"id":6723,"outV":53,"properties":{"weight":6}},{"id":6984,"outV":175,"properties":{"weight":1}},{"id":3145,"outV":104,"properties":{"weight":4}},{"id":4947,"outV":86,"properties":{"weight":1}},{"id":5203,"outV":99,"properties":{"weight":2}},{"id":1366,"outV":130,"properties":{"weight":12}},{"id":1622,"outV":210,"properties":{"weight":1}},{"id":2908,"outV":118,"properties":{"weight":1}},{"id":1885,"outV":103,"properties":{"weight":3}},{"id":4959,"outV":207,"properties":{"weight":6}},{"id":6763,"outV":39,"properties":{"weight":8}},{"id":3435,"outV":58,"properties":{"weight":8}},{"id":5741,"outV":129,"properties":{"weight":12}},{"id":366,"outV":74,"properties":{"weight":38}},{"id":2926,"outV":78,"properties":{"weight":3}},{"id":623,"outV":23,"properties":{"weight":1}},{"id":4721,"outV":186,"properties":{"weight":4}},{"id":2165,"outV":151,"properties":{"weight":1}},{"id":886,"outV":140,"properties":{"weight":1}},{"id":3703,"outV":3,"properties":{"weig
 ht":5}},{"id":7031,"outV":89,"properties":{"weight":4}},{"id":1411,"outV":83,"properties":{"weight":7}},{"id":6278,"outV":49,"properties":{"weight":1}},{"id":3974,"outV":106,"properties":{"weight":2}},{"id":912,"outV":91,"properties":{"weight":59}},{"id":2192,"outV":235,"properties":{"weight":1}},{"id":4759,"outV":37,"properties":{"weight":2}},{"id":1179,"outV":26,"properties":{"weight":2}},{"id":5789,"outV":76,"properties":{"weight":3}},{"id":4257,"outV":10,"properties":{"weight":1}},{"id":6561,"outV":172,"properties":{"weight":1}},{"id":4771,"outV":114,"properties":{"weight":3}},{"id":1454,"outV":81,"properties":{"weight":10}},{"id":6073,"outV":72,"properties":{"weight":13}},{"id":5306,"outV":170,"properties":{"weight":4}},{"id":4027,"outV":173,"properties":{"weight":3}},{"id":1725,"outV":82,"properties":{"weight":3}},{"id":960,"outV":67,"properties":{"weight":2}},{"id":1985,"outV":152,"properties":{"weight":1}},{"id":6594,"outV":127,"properties":{"weight":6}},{"id":6342,"outV":21
 ,"properties":{"weight":4}},{"id":455,"outV":139,"properties":{"weight":1}},{"id":3277,"outV":160,"properties":{"weight":3}},{"id":5837,"outV":258,"properties":{"weight":1}},{"id":2256,"outV":29,"properties":{"weight":1}},{"id":208,"outV":70,"properties":{"weight":2}},{"id":721,"outV":80,"properties":{"weight":1}},{"id":2771,"outV":15,"properties":{"weight":3}},{"id":5076,"outV":4,"properties":{"weight":12}},{"id":2519,"outV":57,"properties":{"weight":10}},{"id":4312,"outV":110,"properties":{"weight":1}},{"id":2268,"outV":25,"properties":{"weight":8}},{"id":2014,"outV":149,"properties":{"weight":1}},{"id":3552,"outV":56,"properties":{"weight":8}},{"id":481,"outV":98,"properties":{"weight":3}},{"id":1764,"outV":28,"properties":{"weight":3}},{"id":1258,"outV":27,"properties":{"weight":3}},{"id":4846,"outV":119,"properties":{"weight":1}},{"id":1518,"outV":164,"properties":{"weight":1}},{"id":4593,"outV":85,"properties":{"weight":2}},{"id":244,"outV":150,"properties":{"weight":3}},{"id"
 :1780,"outV":234,"properties":{"weight":2}},{"id":4344,"outV":62,"properties":{"weight":12}},{"id":2044,"outV":92,"properties":{"weight":2}},{"id":5374,"outV":69,"properties":{"weight":34}},{"id":5886,"outV":96,"properties":{"weight":15}}]},"outE":{"followedBy":[{"id":2688,"inV":94,"properties":{"weight":4}},{"id":2689,"inV":130,"properties":{"weight":11}},{"id":2690,"inV":83,"properties":{"weight":13}},{"id":2691,"inV":170,"properties":{"weight":1}},{"id":2692,"inV":51,"properties":{"weight":3}},{"id":2693,"inV":22,"properties":{"weight":2}},{"id":2694,"inV":296,"properties":{"weight":1}},{"id":2695,"inV":52,"properties":{"weight":1}},{"id":2696,"inV":17,"properties":{"weight":2}},{"id":2697,"inV":202,"properties":{"weight":3}},{"id":2698,"inV":27,"properties":{"weight":2}},{"id":2699,"inV":9,"properties":{"weight":3}},{"id":2700,"inV":25,"properties":{"weight":12}},{"id":2701,"inV":195,"properties":{"weight":2}},{"id":2702,"inV":206,"properties":{"weight":1}},{"id":2703,"inV":39,"
 properties":{"weight":1}},{"id":2704,"inV":69,"properties":{"weight":6}},{"id":2705,"inV":24,"properties":{"weight":1}},{"id":2706,"inV":82,"properties":{"weight":3}},{"id":2707,"inV":57,"properties":{"weight":1}},{"id":2708,"inV":134,"properties":{"weight":9}},{"id":2709,"inV":110,"properties":{"weight":1}},{"id":2710,"inV":99,"properties":{"weight":3}},{"id":2711,"inV":76,"properties":{"weight":4}},{"id":2712,"inV":3,"properties":{"weight":3}},{"id":2713,"inV":178,"properties":{"weight":1}},{"id":2714,"inV":184,"properties":{"weight":1}},{"id":2715,"inV":60,"properties":{"weight":21}},{"id":2716,"inV":148,"properties":{"weight":1}},{"id":2717,"inV":32,"properties":{"weight":1}},{"id":2718,"inV":91,"properties":{"weight":42}},{"id":2719,"inV":103,"properties":{"weight":1}},{"id":2720,"inV":114,"properties":{"weight":4}},{"id":2721,"inV":141,"properties":{"weight":4}},{"id":2722,"inV":154,"properties":{"weight":3}},{"id":2723,"inV":109,"properties":{"weight":2}},{"id":2724,"inV":125
 ,"properties":{"weight":9}},{"id":2725,"inV":85,"properties":{"weight":2}},{"id":2726,"inV":84,"properties":{"weight":5}},{"id":2727,"inV":50,"properties":{"weight":1}},{"id":2728,"inV":214,"properties":{"weight":1}},{"id":2729,"inV":72,"properties":{"weight":1}},{"id":2730,"inV":246,"properties":{"weight":1}},{"id":2731,"inV":129,"properties":{"weight":29}},{"id":2732,"inV":65,"properties":{"weight":2}},{"id":2733,"inV":133,"properties":{"weight":1}},{"id":2734,"inV":62,"properties":{"weight":1}},{"id":2735,"inV":29,"properties":{"weight":4}},{"id":2736,"inV":5,"properties":{"weight":3}},{"id":2737,"inV":183,"properties":{"weight":3}},{"id":2738,"inV":210,"properties":{"weight":1}},{"id":2739,"inV":128,"properties":{"weight":1}},{"id":2740,"inV":67,"properties":{"weight":1}},{"id":2741,"inV":212,"properties":{"weight":1}},{"id":2742,"inV":70,"properties":{"weight":2}},{"id":2743,"inV":75,"properties":{"weight":1}},{"id":2744,"inV":71,"properties":{"weight":1}},{"id":2745,"inV":168,
 "properties":{"weight":2}},{"id":2746,"inV":157,"properties":{"weight":1}},{"id":2747,"inV":92,"properties":{"weight":1}},{"id":2748,"inV":89,"properties":{"weight":5}},{"id":2749,"inV":81,"properties":{"weight":1}},{"id":2750,"inV":187,"properties":{"weight":1}},{"id":2751,"inV":164,"properties":{"weight":1}},{"id":2752,"inV":136,"properties":{"weight":1}},{"id":2753,"inV":46,"properties":{"weight":1}},{"id":2660,"inV":207,"properties":{"weight":3}},{"id":2661,"inV":122,"properties":{"weight":17}},{"id":2662,"inV":96,"properties":{"weight":157}},{"id":2663,"inV":104,"properties":{"weight":1}},{"id":2664,"inV":26,"properties":{"weight":14}},{"id":2665,"inV":123,"properties":{"weight":3}},{"id":2666,"inV":19,"properties":{"weight":12}},{"id":2667,"inV":100,"properties":{"weight":5}},{"id":2668,"inV":12,"properties":{"weight":3}},{"id":2669,"inV":49,"properties":{"weight":12}},{"id":2670,"inV":21,"properties":{"weight":4}},{"id":2671,"inV":120,"properties":{"weight":9}},{"id":2672,"in
 V":23,"properties":{"weight":5}},{"id":2673,"inV":59,"properties":{"weight":6}},{"id":2674,"inV":54,"properties":{"weight":5}},{"id":2675,"inV":80,"properties":{"weight":1}},{"id":2676,"inV":234,"properties":{"weight":1}},{"id":2677,"inV":53,"properties":{"weight":2}},{"id":2678,"inV":225,"properties":{"weight":1}},{"id":2679,"inV":235,"properties":{"weight":2}},{"id":2680,"inV":160,"properties":{"weight":3}},{"id":2681,"inV":56,"properties":{"weight":3}},{"id":2682,"inV":127,"properties":{"weight":6}},{"id":2683,"inV":18,"properties":{"weight":3}},{"id":2684,"inV":4,"properties":{"weight":9}},{"id":2685,"inV":15,"properties":{"weight":7}},{"id":2686,"inV":74,"properties":{"weight":86}},{"id":2687,"inV":153,"properties":{"weight":12}}],"sungBy":[{"id":7292,"inV":359}],"writtenBy":[{"id":7291,"inV":339}]},"properties":{"name":[{"id":36,"value":"PLAYING IN THE BAND"}],"songType":[{"id":38,"value":"original"}],"performances":[{"id":37,"value":582}]}}
-{"id":14,"label":"song","inE":{"followedBy":[{"id":6784,"outV":39,"properties":{"weight":10}},{"id":5251,"outV":32,"properties":{"weight":1}},{"id":4229,"outV":52,"properties":{"weight":3}},{"id":4745,"outV":294,"properties":{"weight":4}},{"id":10,"outV":9,"properties":{"weight":3}},{"id":6283,"outV":49,"properties":{"weight":2}},{"id":4364,"outV":62,"properties":{"weight":16}},{"id":4109,"outV":48,"properties":{"weight":10}},{"id":6544,"outV":55,"properties":{"weight":1}},{"id":4881,"outV":100,"properties":{"weight":20}},{"id":6034,"outV":115,"properties":{"weight":1}},{"id":3219,"outV":63,"properties":{"weight":2}},{"id":531,"outV":120,"properties":{"weight":1}},{"id":4758,"outV":37,"properties":{"weight":2}},{"id":4247,"outV":10,"properties":{"weight":1}},{"id":4631,"outV":154,"properties":{"weight":6}},{"id":3866,"outV":60,"properties":{"weight":2}},{"id":1947,"outV":148,"properties":{"weight":1}},{"id":1436,"outV":83,"properties":{"weight":7}},{"id":2844,"outV":101,"properties"
 :{"weight":1}},{"id":6685,"outV":12,"properties":{"weight":3}},{"id":1183,"outV":26,"properties":{"weight":2}},{"id":160,"outV":108,"properties":{"weight":2}},{"id":4517,"outV":105,"properties":{"weight":6}},{"id":6954,"outV":84,"properties":{"weight":4}},{"id":1451,"outV":81,"properties":{"weight":12}},{"id":1582,"outV":18,"properties":{"weight":4}},{"id":3892,"outV":51,"properties":{"weight":10}},{"id":2107,"outV":17,"properties":{"weight":19}},{"id":5820,"outV":76,"properties":{"weight":1}},{"id":6463,"outV":187,"properties":{"weight":26}},{"id":1090,"outV":59,"properties":{"weight":7}},{"id":6083,"outV":72,"properties":{"weight":9}},{"id":1731,"outV":82,"properties":{"weight":4}},{"id":4037,"outV":173,"properties":{"weight":1}},{"id":2375,"outV":87,"properties":{"weight":8}},{"id":4169,"outV":54,"properties":{"weight":36}},{"id":5578,"outV":42,"properties":{"weight":1}},{"id":5964,"outV":50,"properties":{"weight":2}},{"id":716,"outV":80,"properties":{"weight":10}},{"id":5709,"ou
 tV":20,"properties":{"weight":1}},{"id":845,"outV":171,"properties":{"weight":11}},{"id":5838,"outV":258,"properties":{"weight":1}},{"id":1232,"outV":248,"properties":{"weight":1}},{"id":6993,"outV":175,"properties":{"weight":1}},{"id":3666,"outV":24,"properties":{"weight":2}},{"id":3796,"outV":88,"properties":{"weight":1}},{"id":3156,"outV":104,"properties":{"weight":6}},{"id":6742,"outV":53,"properties":{"weight":15}},{"id":2523,"outV":57,"properties":{"weight":9}},{"id":864,"outV":189,"properties":{"weight":2}},{"id":3556,"outV":56,"properties":{"weight":21}},{"id":102,"outV":46,"properties":{"weight":1}},{"id":5096,"outV":4,"properties":{"weight":2}},{"id":1257,"outV":27,"properties":{"weight":19}},{"id":489,"outV":98,"properties":{"weight":3}},{"id":2030,"outV":180,"properties":{"weight":2}},{"id":2159,"outV":151,"properties":{"weight":1}},{"id":2803,"outV":15,"properties":{"weight":4}},{"id":2935,"outV":78,"properties":{"weight":1}},{"id":2426,"outV":68,"properties":{"weight":
 4}},{"id":3962,"outV":106,"properties":{"weight":2}},{"id":4474,"outV":202,"properties":{"weight":1}},{"id":123,"outV":97,"properties":{"weight":1}},{"id":5628,"outV":22,"properties":{"weight":1}},{"id":4092,"outV":109,"properties":{"weight":1}},{"id":1021,"outV":73,"properties":{"weight":20}},{"id":3455,"outV":58,"properties":{"weight":12}}]},"outE":{"followedBy":[{"id":2981,"inV":50,"properties":{"weight":2}},{"id":2982,"inV":4,"properties":{"weight":3}},{"id":2983,"inV":53,"properties":{"weight":8}},{"id":2984,"inV":57,"properties":{"weight":55}},{"id":2985,"inV":89,"properties":{"weight":2}},{"id":2986,"inV":122,"properties":{"weight":1}},{"id":2987,"inV":153,"properties":{"weight":1}},{"id":2988,"inV":72,"properties":{"weight":26}},{"id":2989,"inV":19,"properties":{"weight":17}},{"id":2990,"inV":9,"properties":{"weight":4}},{"id":2991,"inV":17,"properties":{"weight":13}},{"id":2992,"inV":46,"properties":{"weight":5}},{"id":2993,"inV":51,"properties":{"weight":15}},{"id":2994,"i
 nV":54,"properties":{"weight":28}},{"id":2995,"inV":202,"properties":{"weight":3}},{"id":2996,"inV":27,"properties":{"weight":6}},{"id":2997,"inV":52,"properties":{"weight":3}},{"id":2998,"inV":58,"properties":{"weight":1}},{"id":2999,"inV":56,"properties":{"weight":8}},{"id":3000,"inV":100,"properties":{"weight":12}},{"id":3001,"inV":99,"properties":{"weight":26}},{"id":3002,"inV":98,"properties":{"weight":3}},{"id":3003,"inV":104,"properties":{"weight":2}},{"id":3004,"inV":82,"properties":{"weight":6}},{"id":3005,"inV":215,"properties":{"weight":1}},{"id":3006,"inV":69,"properties":{"weight":2}},{"id":3007,"inV":103,"properties":{"weight":1}},{"id":3008,"inV":83,"properties":{"weight":8}},{"id":3009,"inV":101,"properties":{"weight":1}},{"id":3010,"inV":80,"properties":{"weight":8}},{"id":3011,"inV":121,"properties":{"weight":3}},{"id":3012,"inV":59,"properties":{"weight":1}},{"id":3013,"inV":26,"properties":{"weight":2}},{"id":3014,"inV":32,"properties":{"weight":2}},{"id":3015,"i
 nV":155,"properties":{"weight":1}},{"id":3016,"inV":42,"properties":{"weight":2}},{"id":3017,"inV":18,"properties":{"weight":1}},{"id":3018,"inV":105,"properties":{"weight":11}},{"id":3019,"inV":12,"properties":{"weight":1}},{"id":3020,"inV":49,"properties":{"weight":27}},{"id":3021,"inV":65,"properties":{"weight":2}},{"id":3022,"inV":85,"properties":{"weight":2}},{"id":3023,"inV":73,"properties":{"weight":8}},{"id":3024,"inV":106,"properties":{"weight":3}},{"id":3025,"inV":189,"properties":{"weight":3}},{"id":3026,"inV":10,"properties":{"weight":1}},{"id":3027,"inV":210,"properties":{"weight":3}},{"id":3028,"inV":76,"properties":{"weight":1}},{"id":3029,"inV":87,"properties":{"weight":1}},{"id":3030,"inV":96,"properties":{"weight":1}},{"id":3031,"inV":150,"properties":{"weight":1}},{"id":3032,"inV":66,"properties":{"weight":1}},{"id":3033,"inV":5,"properties":{"weight":1}},{"id":3034,"inV":91,"properties":{"weight":29}},{"id":3035,"inV":60,"properties":{"weight":6}},{"id":3036,"inV
 ":67,"properties":{"weight":1}},{"id":3037,"inV":74,"properties":{"weight":1}},{"id":3038,"inV":21,"properties":{"weight":1}},{"id":3039,"inV":169,"properties":{"weight":1}},{"id":3040,"inV":62,"properties":{"weight":1}},{"id":3041,"inV":39,"properties":{"weight":2}},{"id":3042,"inV":175,"properties":{"weight":1}},{"id":3043,"inV":172,"properties":{"weight":1}},{"id":3044,"inV":28,"properties":{"weight":5}},{"id":3045,"inV":173,"properties":{"weight":1}},{"id":3046,"inV":37,"properties":{"weight":5}},{"id":3047,"inV":35,"properties":{"weight":2}}],"sungBy":[{"id":7232,"inV":351}],"writtenBy":[{"id":7231,"inV":350}]},"properties":{"name":[{"id":39,"value":"LOOKS LIKE RAIN"}],"songType":[{"id":41,"value":"original"}],"performances":[{"id":40,"value":417}]}}
-{"id":15,"label":"song","inE":{"followedBy":[{"id":1152,"outV":26,"properties":{"weight":1}},{"id":769,"outV":122,"properties":{"weight":3}},{"id":5379,"outV":69,"properties":{"weight":4}},{"id":3844,"outV":60,"properties":{"weight":2}},{"id":1414,"outV":83,"properties":{"weight":2}},{"id":6663,"outV":12,"properties":{"weight":167}},{"id":4872,"outV":100,"properties":{"weight":9}},{"id":4105,"outV":48,"properties":{"weight":4}},{"id":11,"outV":9,"properties":{"weight":3}},{"id":4622,"outV":154,"properties":{"weight":1}},{"id":2833,"outV":101,"properties":{"weight":1}},{"id":2195,"outV":235,"properties":{"weight":1}},{"id":5141,"outV":125,"properties":{"weight":2}},{"id":3224,"outV":63,"properties":{"weight":2}},{"id":1945,"outV":148,"properties":{"weight":2}},{"id":5024,"outV":30,"properties":{"weight":2}},{"id":2597,"outV":112,"properties":{"weight":35}},{"id":1062,"outV":73,"properties":{"weight":1}},{"id":5032,"outV":47,"properties":{"weight":1}},{"id":4776,"outV":114,"properties
 ":{"weight":1}},{"id":6698,"outV":141,"properties":{"weight":1}},{"id":3885,"outV":51,"properties":{"weight":14}},{"id":1712,"outV":82,"properties":{"weight":4}},{"id":5301,"outV":170,"properties":{"weight":1}},{"id":1847,"outV":94,"properties":{"weight":6}},{"id":4153,"outV":54,"properties":{"weight":7}},{"id":1339,"outV":31,"properties":{"weight":2}},{"id":6075,"outV":72,"properties":{"weight":4}},{"id":2108,"outV":17,"properties":{"weight":8}},{"id":60,"outV":46,"properties":{"weight":1}},{"id":6460,"outV":187,"properties":{"weight":10}},{"id":3653,"outV":24,"properties":{"weight":14}},{"id":6731,"outV":53,"properties":{"weight":1}},{"id":3147,"outV":104,"properties":{"weight":2}},{"id":1101,"outV":59,"properties":{"weight":2}},{"id":4052,"outV":173,"properties":{"weight":1}},{"id":2518,"outV":57,"properties":{"weight":5}},{"id":476,"outV":98,"properties":{"weight":3}},{"id":1372,"outV":130,"properties":{"weight":1}},{"id":5085,"outV":4,"properties":{"weight":1}},{"id":1245,"outV
 ":27,"properties":{"weight":5}},{"id":2272,"outV":25,"properties":{"weight":4}},{"id":4577,"outV":254,"properties":{"weight":1}},{"id":5735,"outV":129,"properties":{"weight":2}},{"id":3432,"outV":58,"properties":{"weight":7}},{"id":3562,"outV":56,"properties":{"weight":6}},{"id":746,"outV":80,"properties":{"weight":1}},{"id":2411,"outV":68,"properties":{"weight":1}},{"id":2924,"outV":78,"properties":{"weight":3}},{"id":4467,"outV":202,"properties":{"weight":6}},{"id":376,"outV":74,"properties":{"weight":1}},{"id":5242,"outV":32,"properties":{"weight":2}},{"id":6267,"outV":49,"properties":{"weight":1}},{"id":2685,"outV":13,"properties":{"weight":7}}]},"outE":{"followedBy":[{"id":2816,"inV":103,"properties":{"weight":1}},{"id":2817,"inV":62,"properties":{"weight":1}},{"id":2818,"inV":64,"properties":{"weight":1}},{"id":2819,"inV":75,"properties":{"weight":3}},{"id":2820,"inV":152,"properties":{"weight":1}},{"id":2821,"inV":117,"properties":{"weight":1}},{"id":2822,"inV":168,"propertie
 s":{"weight":1}},{"id":2823,"inV":188,"properties":{"weight":1}},{"id":2824,"inV":131,"properties":{"weight":4}},{"id":2825,"inV":28,"properties":{"weight":1}},{"id":2826,"inV":124,"properties":{"weight":1}},{"id":2827,"inV":190,"properties":{"weight":1}},{"id":2828,"inV":137,"properties":{"weight":1}},{"id":2755,"inV":19,"properties":{"weight":8}},{"id":2756,"inV":56,"properties":{"weight":22}},{"id":2757,"inV":104,"properties":{"weight":17}},{"id":2758,"inV":49,"properties":{"weight":4}},{"id":2759,"inV":122,"properties":{"weight":3}},{"id":2760,"inV":23,"properties":{"weight":2}},{"id":2761,"inV":27,"properties":{"weight":23}},{"id":2762,"inV":89,"properties":{"weight":7}},{"id":2763,"inV":46,"properties":{"weight":1}},{"id":2764,"inV":57,"properties":{"weight":7}},{"id":2765,"inV":59,"properties":{"weight":6}},{"id":2766,"inV":58,"properties":{"weight":18}},{"id":2767,"inV":54,"properties":{"weight":25}},{"id":2768,"inV":100,"properties":{"weight":24}},{"id":2769,"inV":39,"prope
 rties":{"weight":3}},{"id":2770,"inV":160,"properties":{"weight":5}},{"id":2771,"inV":13,"properties":{"weight":3}},{"id":2772,"inV":51,"properties":{"weight":14}},{"id":2773,"inV":94,"properties":{"weight":4}},{"id":2774,"inV":148,"properties":{"weight":1}},{"id":2775,"inV":9,"properties":{"weight":5}},{"id":2776,"inV":48,"properties":{"weight":17}},{"id":2777,"inV":55,"properties":{"weight":1}},{"id":2778,"inV":72,"properties":{"weight":3}},{"id":2779,"inV":52,"properties":{"weight":1}},{"id":2780,"inV":12,"properties":{"weight":3}},{"id":2781,"inV":4,"properties":{"weight":4}},{"id":2782,"inV":83,"properties":{"weight":2}},{"id":2783,"inV":202,"properties":{"weight":6}},{"id":2784,"inV":82,"properties":{"weight":3}},{"id":2785,"inV":74,"properties":{"weight":1}},{"id":2786,"inV":69,"properties":{"weight":7}},{"id":2787,"inV":98,"properties":{"weight":10}},{"id":2788,"inV":21,"properties":{"weight":1}},{"id":2789,"inV":125,"properties":{"weight":1}},{"id":2790,"inV":170,"propertie
 s":{"weight":3}},{"id":2791,"inV":26,"properties":{"weight":1}},{"id":2792,"inV":60,"properties":{"weight":1}},{"id":2793,"inV":294,"properties":{"weight":2}},{"id":2794,"inV":99,"properties":{"weight":3}},{"id":2795,"inV":17,"properties":{"weight":10}},{"id":2796,"inV":63,"properties":{"weight":5}},{"id":2797,"inV":68,"properties":{"weight":3}},{"id":2798,"inV":108,"properties":{"weight":6}},{"id":2799,"inV":109,"properties":{"weight":1}},{"id":2800,"inV":196,"properties":{"weight":3}},{"id":2801,"inV":91,"properties":{"weight":1}},{"id":2802,"inV":18,"properties":{"weight":1}},{"id":2803,"inV":14,"properties":{"weight":4}},{"id":2804,"inV":105,"properties":{"weight":8}},{"id":2805,"inV":101,"properties":{"weight":2}},{"id":2806,"inV":10,"properties":{"weight":2}},{"id":2807,"inV":73,"properties":{"weight":26}},{"id":2808,"inV":78,"properties":{"weight":1}},{"id":2809,"inV":32,"properties":{"weight":3}},{"id":2810,"inV":106,"properties":{"weight":2}},{"id":2811,"inV":180,"propertie
 s":{"weight":2}},{"id":2812,"inV":88,"properties":{"weight":1}},{"id":2813,"inV":97,"properties":{"weight":1}},{"id":2814,"inV":53,"properties":{"weight":3}},{"id":2815,"inV":115,"properties":{"weight":4}}],"sungBy":[{"id":7472,"inV":351}],"writtenBy":[{"id":7471,"inV":479}]},"properties":{"name":[{"id":42,"value":"BIG RIVER"}],"songType":[{"id":44,"value":"cover"}],"performances":[{"id":43,"value":397}]}}
-{"id":16,"label":"song","inE":{"followedBy":[{"id":7008,"outV":89,"properties":{"weight":1}},{"id":6467,"outV":187,"properties":{"weight":1}},{"id":6341,"outV":21,"properties":{"weight":1}},{"id":5637,"outV":22,"properties":{"weight":3}},{"id":4101,"outV":48,"properties":{"weight":1}},{"id":5382,"outV":69,"properties":{"weight":4}},{"id":6537,"outV":55,"properties":{"weight":1}},{"id":3273,"outV":160,"properties":{"weight":2}},{"id":3882,"outV":51,"properties":{"weight":12}},{"id":12,"outV":9,"properties":{"weight":1}},{"id":1260,"outV":27,"properties":{"weight":1}},{"id":4172,"outV":54,"properties":{"weight":1}},{"id":6285,"outV":49,"properties":{"weight":1}},{"id":368,"outV":74,"properties":{"weight":1}},{"id":4464,"outV":202,"properties":{"weight":1}},{"id":468,"outV":195,"properties":{"weight":3}},{"id":5303,"outV":170,"properties":{"weight":2}},{"id":472,"outV":98,"properties":{"weight":2}},{"id":5081,"outV":4,"properties":{"weight":2}},{"id":2521,"outV":57,"properties":{"weigh
 t":1}},{"id":5146,"outV":125,"properties":{"weight":1}},{"id":1405,"outV":83,"properties":{"weight":5}},{"id":1854,"outV":94,"properties":{"weight":2}},{"id":1950,"outV":148,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":2169,"inV":25,"properties":{"weight":1}},{"id":2170,"inV":101,"properties":{"weight":46}},{"id":2171,"inV":89,"properties":{"weight":2}},{"id":2172,"inV":130,"properties":{"weight":1}},{"id":2173,"inV":83,"properties":{"weight":1}}]},"properties":{"name":[{"id":45,"value":"WEATHER REPORT SUITE"}],"songType":[{"id":47,"value":""}],"performances":[{"id":46,"value":0}]}}
-{"id":17,"label":"song","inE":{"followedBy":[{"id":5955,"outV":50,"properties":{"weight":43}},{"id":5702,"outV":20,"properties":{"weight":2}},{"id":2696,"outV":13,"properties":{"weight":2}},{"id":6538,"outV":55,"properties":{"weight":1}},{"id":1163,"outV":26,"properties":{"weight":34}},{"id":13,"outV":9,"properties":{"weight":1}},{"id":402,"outV":38,"properties":{"weight":12}},{"id":6675,"outV":12,"properties":{"weight":3}},{"id":5011,"outV":30,"properties":{"weight":3}},{"id":1877,"outV":103,"properties":{"weight":2}},{"id":2522,"outV":57,"properties":{"weight":1}},{"id":3803,"outV":88,"properties":{"weight":4}},{"id":475,"outV":98,"properties":{"weight":1}},{"id":3996,"outV":106,"properties":{"weight":1}},{"id":2588,"outV":112,"properties":{"weight":3}},{"id":540,"outV":120,"properties":{"weight":1}},{"id":990,"outV":11,"properties":{"weight":3}},{"id":1570,"outV":18,"properties":{"weight":6}},{"id":2275,"outV":25,"properties":{"weight":1}},{"id":4262,"outV":10,"properties":{"weig
 ht":5}},{"id":2795,"outV":15,"properties":{"weight":10}},{"id":6955,"outV":84,"properties":{"weight":1}},{"id":2413,"outV":68,"properties":{"weight":9}},{"id":4077,"outV":109,"properties":{"weight":1}},{"id":2991,"outV":14,"properties":{"weight":13}},{"id":4912,"outV":100,"properties":{"weight":1}},{"id":3639,"outV":24,"properties":{"weight":13}},{"id":6583,"outV":116,"properties":{"weight":1}},{"id":58,"outV":46,"properties":{"weight":2}},{"id":635,"outV":23,"properties":{"weight":16}},{"id":5244,"outV":32,"properties":{"weight":19}},{"id":2942,"outV":78,"properties":{"weight":1}},{"id":6847,"outV":64,"properties":{"weight":7}}]},"outE":{"followedBy":[{"id":2112,"inV":24,"properties":{"weight":9}},{"id":2113,"inV":21,"properties":{"weight":1}},{"id":2114,"inV":46,"properties":{"weight":1}},{"id":2115,"inV":20,"properties":{"weight":2}},{"id":2116,"inV":10,"properties":{"weight":7}},{"id":2117,"inV":68,"properties":{"weight":25}},{"id":2118,"inV":32,"properties":{"weight":19}},{"id"
 :2119,"inV":103,"properties":{"weight":3}},{"id":2120,"inV":121,"properties":{"weight":3}},{"id":2121,"inV":112,"properties":{"weight":31}},{"id":2122,"inV":85,"properties":{"weight":1}},{"id":2123,"inV":101,"properties":{"weight":1}},{"id":2124,"inV":109,"properties":{"weight":1}},{"id":2125,"inV":73,"properties":{"weight":1}},{"id":2126,"inV":88,"properties":{"weight":8}},{"id":2127,"inV":111,"properties":{"weight":3}},{"id":2128,"inV":54,"properties":{"weight":2}},{"id":2129,"inV":97,"properties":{"weight":2}},{"id":2130,"inV":100,"properties":{"weight":1}},{"id":2131,"inV":42,"properties":{"weight":1}},{"id":2132,"inV":58,"properties":{"weight":2}},{"id":2133,"inV":244,"properties":{"weight":1}},{"id":2134,"inV":56,"properties":{"weight":1}},{"id":2135,"inV":63,"properties":{"weight":1}},{"id":2136,"inV":188,"properties":{"weight":2}},{"id":2137,"inV":71,"properties":{"weight":1}},{"id":2138,"inV":30,"properties":{"weight":2}},{"id":2139,"inV":31,"properties":{"weight":1}},{"id"
 :2140,"inV":77,"properties":{"weight":2}},{"id":2141,"inV":40,"properties":{"weight":1}},{"id":2142,"inV":33,"properties":{"weight":1}},{"id":2103,"inV":18,"properties":{"weight":17}},{"id":2104,"inV":39,"properties":{"weight":2}},{"id":2105,"inV":22,"properties":{"weight":4}},{"id":2106,"inV":50,"properties":{"weight":6}},{"id":2107,"inV":14,"properties":{"weight":19}},{"id":2108,"inV":15,"properties":{"weight":8}},{"id":2109,"inV":12,"properties":{"weight":24}},{"id":2110,"inV":23,"properties":{"weight":2}},{"id":2111,"inV":13,"properties":{"weight":4}}],"sungBy":[{"id":7364,"inV":340}],"writtenBy":[{"id":7363,"inV":339}]},"properties":{"name":[{"id":48,"value":"THEY LOVE EACH OTHER"}],"songType":[{"id":50,"value":"original"}],"performances":[{"id":49,"value":227}]}}
-{"id":18,"label":"song","inE":{"followedBy":[{"id":1024,"outV":73,"properties":{"weight":4}},{"id":4097,"outV":48,"properties":{"weight":13}},{"id":6276,"outV":49,"properties":{"weight":2}},{"id":2309,"outV":25,"properties":{"weight":1}},{"id":3333,"outV":155,"properties":{"weight":1}},{"id":4231,"outV":52,"properties":{"weight":1}},{"id":4360,"outV":62,"properties":{"weight":1}},{"id":5257,"outV":32,"properties":{"weight":3}},{"id":3849,"outV":60,"properties":{"weight":1}},{"id":5385,"outV":69,"properties":{"weight":2}},{"id":2189,"outV":235,"properties":{"weight":1}},{"id":14,"outV":9,"properties":{"weight":5}},{"id":654,"outV":23,"properties":{"weight":1}},{"id":5010,"outV":30,"properties":{"weight":2}},{"id":6546,"outV":55,"properties":{"weight":1}},{"id":4885,"outV":100,"properties":{"weight":11}},{"id":1814,"outV":273,"properties":{"weight":1}},{"id":1943,"outV":148,"properties":{"weight":1}},{"id":5145,"outV":125,"properties":{"weight":1}},{"id":6688,"outV":12,"properties":{"
 weight":1}},{"id":4642,"outV":154,"properties":{"weight":3}},{"id":4260,"outV":10,"properties":{"weight":3}},{"id":2852,"outV":101,"properties":{"weight":1}},{"id":3238,"outV":63,"properties":{"weight":1}},{"id":6695,"outV":141,"properties":{"weight":1}},{"id":3880,"outV":51,"properties":{"weight":12}},{"id":1193,"outV":26,"properties":{"weight":1}},{"id":425,"outV":38,"properties":{"weight":2}},{"id":2601,"outV":112,"properties":{"weight":1}},{"id":4524,"outV":105,"properties":{"weight":3}},{"id":45,"outV":46,"properties":{"weight":3}},{"id":4015,"outV":292,"properties":{"weight":1}},{"id":560,"outV":120,"properties":{"weight":1}},{"id":6579,"outV":116,"properties":{"weight":1}},{"id":5299,"outV":170,"properties":{"weight":3}},{"id":4404,"outV":40,"properties":{"weight":1}},{"id":1716,"outV":82,"properties":{"weight":3}},{"id":5429,"outV":315,"properties":{"weight":1}},{"id":4150,"outV":218,"properties":{"weight":1}},{"id":2103,"outV":17,"properties":{"weight":17}},{"id":4152,"outV
 ":54,"properties":{"weight":18}},{"id":6456,"outV":187,"properties":{"weight":8}},{"id":1849,"outV":94,"properties":{"weight":6}},{"id":6715,"outV":53,"properties":{"weight":6}},{"id":827,"outV":171,"properties":{"weight":1}},{"id":6205,"outV":319,"properties":{"weight":1}},{"id":1086,"outV":59,"properties":{"weight":21}}

<TRUNCATED>

[10/19] tinkerpop git commit: TINKERPOP-1274: GraphSON 2.0.

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializers.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializers.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializers.java
deleted file mode 100644
index aaca316..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializers.java
+++ /dev/null
@@ -1,465 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.structure.io.graphson;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Path;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.util.Metrics;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalExplanation;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.apache.tinkerpop.gremlin.structure.util.Comparators;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
-import org.apache.tinkerpop.shaded.jackson.core.JsonGenerationException;
-import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
-import org.apache.tinkerpop.shaded.jackson.core.JsonProcessingException;
-import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
-import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
-import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdKeySerializer;
-import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
-import org.javatuples.Pair;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
-
-/**
- * GraphSON serializers for graph-based objects such as vertices, edges, properties, and paths. These serializers
- * present a generalized way to serialize the implementations of core interfaces.
- *
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-final class GraphSONSerializers {
-
-    private GraphSONSerializers() {}
-
-    final static class VertexPropertyJacksonSerializer extends StdSerializer<VertexProperty> {
-
-        private final boolean normalize;
-
-        public VertexPropertyJacksonSerializer(final boolean normalize) {
-            super(VertexProperty.class);
-            this.normalize = normalize;
-        }
-
-        @Override
-        public void serialize(final VertexProperty property, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
-                throws IOException {
-            serializerVertexProperty(property, jsonGenerator, serializerProvider, null, normalize, true);
-        }
-
-        @Override
-        public void serializeWithType(final VertexProperty property, final JsonGenerator jsonGenerator,
-                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
-            serializerVertexProperty(property, jsonGenerator, serializerProvider, typeSerializer, normalize, true);
-        }
-    }
-
-    final static class PropertyJacksonSerializer extends StdSerializer<Property> {
-
-        public PropertyJacksonSerializer() {
-            super(Property.class);
-        }
-
-        @Override
-        public void serialize(final Property property, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
-                throws IOException {
-            ser(property, jsonGenerator, serializerProvider, null);
-        }
-        @Override
-        public void serializeWithType(final Property property, final JsonGenerator jsonGenerator,
-                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
-            ser(property, jsonGenerator, serializerProvider, typeSerializer);
-        }
-
-        private static void ser(final Property property, final JsonGenerator jsonGenerator,
-                                final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
-            jsonGenerator.writeStartObject();
-            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-            serializerProvider.defaultSerializeField(GraphSONTokens.KEY, property.key(), jsonGenerator);
-            serializerProvider.defaultSerializeField(GraphSONTokens.VALUE, property.value(), jsonGenerator);
-            jsonGenerator.writeEndObject();
-        }
-    }
-
-    final static class EdgeJacksonSerializer extends StdSerializer<Edge> {
-
-        private final boolean normalize;
-
-        public EdgeJacksonSerializer(final boolean normalize) {
-            super(Edge.class);
-            this.normalize = normalize;
-        }
-
-
-        @Override
-        public void serialize(final Edge edge, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
-                throws IOException {
-            ser(edge, jsonGenerator, serializerProvider, null);
-        }
-        @Override
-        public void serializeWithType(final Edge edge, final JsonGenerator jsonGenerator,
-                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
-            ser(edge, jsonGenerator, serializerProvider, typeSerializer);
-        }
-
-        private void ser(final Edge edge, final JsonGenerator jsonGenerator,
-                                final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
-            jsonGenerator.writeStartObject();
-            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-            GraphSONUtil.writeWithType(GraphSONTokens.ID, edge.id(), jsonGenerator, serializerProvider, typeSerializer);
-
-            jsonGenerator.writeStringField(GraphSONTokens.LABEL, edge.label());
-            jsonGenerator.writeStringField(GraphSONTokens.TYPE, GraphSONTokens.EDGE);
-            jsonGenerator.writeStringField(GraphSONTokens.IN_LABEL, edge.inVertex().label());
-            jsonGenerator.writeStringField(GraphSONTokens.OUT_LABEL, edge.outVertex().label());
-            GraphSONUtil.writeWithType(GraphSONTokens.IN, edge.inVertex().id(), jsonGenerator, serializerProvider, typeSerializer);
-            GraphSONUtil.writeWithType(GraphSONTokens.OUT, edge.outVertex().id(), jsonGenerator, serializerProvider, typeSerializer);
-            writeProperties(edge, jsonGenerator, serializerProvider, typeSerializer);
-            jsonGenerator.writeEndObject();
-        }
-
-        private void writeProperties(final Edge edge, final JsonGenerator jsonGenerator,
-                                            final SerializerProvider serializerProvider,
-                                            final TypeSerializer typeSerializer) throws IOException {
-            final Iterator<Property<Object>> elementProperties = normalize ?
-                    IteratorUtils.list(edge.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : edge.properties();
-            if (elementProperties.hasNext()) {
-                jsonGenerator.writeObjectFieldStart(GraphSONTokens.PROPERTIES);
-                if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-                while (elementProperties.hasNext()) {
-                    final Property<Object> elementProperty = elementProperties.next();
-                    GraphSONUtil.writeWithType(elementProperty.key(), elementProperty.value(), jsonGenerator, serializerProvider, typeSerializer);
-                }
-                jsonGenerator.writeEndObject();
-            }
-        }
-
-    }
-
-    final static class VertexJacksonSerializer extends StdSerializer<Vertex> {
-
-        private final boolean normalize;
-
-        public VertexJacksonSerializer(final boolean normalize) {
-            super(Vertex.class);
-            this.normalize = normalize;
-        }
-
-        @Override
-        public void serialize(final Vertex vertex, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
-                throws IOException {
-            ser(vertex, jsonGenerator, serializerProvider, null);
-        }
-
-        @Override
-        public void serializeWithType(final Vertex vertex, final JsonGenerator jsonGenerator,
-                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
-            ser(vertex, jsonGenerator, serializerProvider, typeSerializer);
-
-        }
-
-        private void ser(final Vertex vertex, final JsonGenerator jsonGenerator,
-                                final SerializerProvider serializerProvider, final TypeSerializer typeSerializer)
-                throws IOException {
-            jsonGenerator.writeStartObject();
-            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-            GraphSONUtil.writeWithType(GraphSONTokens.ID, vertex.id(), jsonGenerator, serializerProvider, typeSerializer);
-            jsonGenerator.writeStringField(GraphSONTokens.LABEL, vertex.label());
-            jsonGenerator.writeStringField(GraphSONTokens.TYPE, GraphSONTokens.VERTEX);
-            writeProperties(vertex, jsonGenerator, serializerProvider, typeSerializer);
-            jsonGenerator.writeEndObject();
-        }
-
-        private void writeProperties(final Vertex vertex, final JsonGenerator jsonGenerator,
-                                            final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
-            jsonGenerator.writeObjectFieldStart(GraphSONTokens.PROPERTIES);
-            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-
-            final List<String> keys = normalize ?
-                    IteratorUtils.list(vertex.keys().iterator(), Comparator.naturalOrder()) : new ArrayList<>(vertex.keys());
-            for (String key : keys) {
-                final Iterator<VertexProperty<Object>> vertexProperties = normalize ?
-                        IteratorUtils.list(vertex.properties(key), Comparators.PROPERTY_COMPARATOR).iterator() : vertex.properties(key);
-
-                if (vertexProperties.hasNext()) {
-                    jsonGenerator.writeArrayFieldStart(key);
-                    if (typeSerializer != null) {
-                        jsonGenerator.writeString(ArrayList.class.getName());
-                        jsonGenerator.writeStartArray();
-                    }
-
-                    while (vertexProperties.hasNext()) {
-                        serializerVertexProperty(vertexProperties.next(), jsonGenerator, serializerProvider, typeSerializer, normalize, false);
-                    }
-
-                    jsonGenerator.writeEndArray();
-                    if (typeSerializer != null) jsonGenerator.writeEndArray();
-                }
-            }
-
-            jsonGenerator.writeEndObject();
-        }
-
-    }
-
-    final static class PathJacksonSerializer extends StdSerializer<Path> {
-
-        public PathJacksonSerializer() {
-            super(Path.class);
-        }
-        @Override
-        public void serialize(final Path path, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
-                throws IOException, JsonGenerationException {
-            ser(path, jsonGenerator, null);
-        }
-
-        @Override
-        public void serializeWithType(final Path path, final JsonGenerator jsonGenerator,
-                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer)
-                throws IOException, JsonProcessingException {
-            ser(path, jsonGenerator, typeSerializer);
-        }
-        private static void ser(final Path path, final JsonGenerator jsonGenerator, final TypeSerializer typeSerializer)
-                throws IOException {
-            jsonGenerator.writeStartObject();
-            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-            jsonGenerator.writeObjectField(GraphSONTokens.LABELS, path.labels());
-            jsonGenerator.writeObjectField(GraphSONTokens.OBJECTS, path.objects());
-            jsonGenerator.writeEndObject();
-        }
-
-    }
-    
-    final static class TreeJacksonSerializer extends StdSerializer<Tree> {
-
-        public TreeJacksonSerializer() {
-            super(Tree.class);
-        }
-
-        @Override
-        public void serialize(final Tree tree, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) throws IOException, JsonGenerationException {
-            ser(tree, jsonGenerator, null);
-        }
-        
-        @Override
-        public void serializeWithType(final Tree tree, final JsonGenerator jsonGenerator,
-                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer)
-                throws IOException, JsonProcessingException {
-            ser(tree, jsonGenerator, typeSerializer);
-        }
-        
-        private static void ser(final Tree tree, final JsonGenerator jsonGenerator, final TypeSerializer typeSerializer)
-                throws IOException {
-            jsonGenerator.writeStartObject(); 
-            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-            
-            Set<Map.Entry<Element, Tree>> set = tree.entrySet();
-            for(Map.Entry<Element, Tree> entry : set)
-            {
-                jsonGenerator.writeObjectFieldStart(entry.getKey().id().toString());
-                if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-                jsonGenerator.writeObjectField(GraphSONTokens.KEY, entry.getKey()); 
-                jsonGenerator.writeObjectField(GraphSONTokens.VALUE, entry.getValue());
-                jsonGenerator.writeEndObject();
-            }
-            jsonGenerator.writeEndObject();
-        }
-    } 
-    
-    /**
-     * Maps in the JVM can have {@link Object} as a key, but in JSON they must be a {@link String}.
-     */
-    final static class GraphSONKeySerializer extends StdKeySerializer {
-
-        @Override
-        public void serialize(final Object o, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) throws IOException {
-            ser(o, jsonGenerator, serializerProvider);
-        }
-        @Override
-        public void serializeWithType(final Object o, final JsonGenerator jsonGenerator,
-                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
-            ser(o, jsonGenerator, serializerProvider);
-        }
-
-        private void ser(final Object o, final JsonGenerator jsonGenerator,
-                         final SerializerProvider serializerProvider) throws IOException {
-            if (Element.class.isAssignableFrom(o.getClass()))
-                jsonGenerator.writeFieldName((((Element) o).id()).toString());
-            else
-                super.serialize(o, jsonGenerator, serializerProvider);
-        }
-    }
-
-    final static class TraversalExplanationJacksonSerializer extends StdSerializer<TraversalExplanation> {
-        public TraversalExplanationJacksonSerializer() {
-            super(TraversalExplanation.class);
-        }
-
-        @Override
-        public void serialize(final TraversalExplanation traversalExplanation, final JsonGenerator jsonGenerator,
-                              final SerializerProvider serializerProvider) throws IOException {
-            ser(traversalExplanation, jsonGenerator);
-        }
-
-        @Override
-        public void serializeWithType(final TraversalExplanation value, final JsonGenerator gen,
-                                      final SerializerProvider serializers, final TypeSerializer typeSer) throws IOException {
-            ser(value, gen);
-        }
-
-        public void ser(final TraversalExplanation te, final JsonGenerator jsonGenerator) throws IOException {
-            final Map<String, Object> m = new HashMap<>();
-            m.put(GraphSONTokens.ORIGINAL, getStepsAsList(te.getOriginalTraversal()));
-
-            final List<Pair<TraversalStrategy, Traversal.Admin<?,?>>> strategyTraversals = te.getStrategyTraversals();
-
-            final List<Map<String,Object>> intermediates = new ArrayList<>();
-            for (final Pair<TraversalStrategy, Traversal.Admin<?, ?>> pair : strategyTraversals) {
-                final Map<String,Object> intermediate = new HashMap<>();
-                intermediate.put(GraphSONTokens.STRATEGY, pair.getValue0().toString());
-                intermediate.put(GraphSONTokens.CATEGORY, pair.getValue0().getTraversalCategory().getSimpleName());
-                intermediate.put(GraphSONTokens.TRAVERSAL, getStepsAsList(pair.getValue1()));
-                intermediates.add(intermediate);
-            }
-            m.put(GraphSONTokens.INTERMEDIATE, intermediates);
-
-            if (strategyTraversals.isEmpty())
-                m.put(GraphSONTokens.FINAL, getStepsAsList(te.getOriginalTraversal()));
-            else
-                m.put(GraphSONTokens.FINAL, getStepsAsList(strategyTraversals.get(strategyTraversals.size() - 1).getValue1()));
-
-            jsonGenerator.writeObject(m);
-        }
-
-        private List<String> getStepsAsList(final Traversal.Admin<?,?> t) {
-            final List<String> steps = new ArrayList<>();
-            t.getSteps().iterator().forEachRemaining(s -> steps.add(s.toString()));
-            return steps;
-        }
-    }
-
-    final static class TraversalMetricsJacksonSerializer extends StdSerializer<TraversalMetrics> {
-        public TraversalMetricsJacksonSerializer() {
-            super(TraversalMetrics.class);
-        }
-
-        @Override
-        public void serialize(final TraversalMetrics property, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
-                throws IOException {
-            serializeInternal(property, jsonGenerator);
-        }
-
-        @Override
-        public void serializeWithType(final TraversalMetrics property, final JsonGenerator jsonGenerator,
-                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
-            serializeInternal(property, jsonGenerator);
-        }
-
-        private static void serializeInternal(final TraversalMetrics traversalMetrics, final JsonGenerator jsonGenerator) throws IOException {
-            // creation of the map enables all the fields to be properly written with their type if required
-            final Map<String, Object> m = new HashMap<>();
-            m.put(GraphSONTokens.DURATION, traversalMetrics.getDuration(TimeUnit.NANOSECONDS) / 1000000d);
-            final List<Map<String, Object>> metrics = new ArrayList<>();
-            traversalMetrics.getMetrics().forEach(it -> metrics.add(metricsToMap(it)));
-            m.put(GraphSONTokens.METRICS, metrics);
-
-            jsonGenerator.writeObject(m);
-        }
-
-        private static Map<String, Object> metricsToMap(final Metrics metrics) {
-            final Map<String, Object> m = new HashMap<>();
-            m.put(GraphSONTokens.ID, metrics.getId());
-            m.put(GraphSONTokens.NAME, metrics.getName());
-            m.put(GraphSONTokens.COUNTS, metrics.getCounts());
-            m.put(GraphSONTokens.DURATION, metrics.getDuration(TimeUnit.NANOSECONDS) / 1000000d);
-
-            if (!metrics.getAnnotations().isEmpty()) {
-                m.put(GraphSONTokens.ANNOTATIONS, metrics.getAnnotations());
-            }
-
-            if (!metrics.getNested().isEmpty()) {
-                final List<Map<String, Object>> nested = new ArrayList<>();
-                metrics.getNested().forEach(it -> nested.add(metricsToMap(it)));
-                m.put(GraphSONTokens.METRICS, nested);
-            }
-            return m;
-        }
-    }
-
-    private static void serializerVertexProperty(final VertexProperty property, final JsonGenerator jsonGenerator,
-                                                 final SerializerProvider serializerProvider,
-                                                 final TypeSerializer typeSerializer, final boolean normalize,
-                                                 final boolean includeLabel) throws IOException {
-        jsonGenerator.writeStartObject();
-        if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-        GraphSONUtil.writeWithType(GraphSONTokens.ID, property.id(), jsonGenerator, serializerProvider, typeSerializer);
-        GraphSONUtil.writeWithType(GraphSONTokens.VALUE, property.value(), jsonGenerator, serializerProvider, typeSerializer);
-        if (includeLabel) jsonGenerator.writeStringField(GraphSONTokens.LABEL, property.label());
-        tryWriteMetaProperties(property, jsonGenerator, serializerProvider, typeSerializer, normalize);
-        jsonGenerator.writeEndObject();
-    }
-
-    private static void tryWriteMetaProperties(final VertexProperty property, final JsonGenerator jsonGenerator,
-                                               final SerializerProvider serializerProvider,
-                                               final TypeSerializer typeSerializer, final boolean normalize) throws IOException {
-        // when "detached" you can't check features of the graph it detached from so it has to be
-        // treated differently from a regular VertexProperty implementation.
-        if (property instanceof DetachedVertexProperty) {
-            // only write meta properties key if they exist
-            if (property.properties().hasNext()) {
-                writeMetaProperties(property, jsonGenerator, serializerProvider, typeSerializer, normalize);
-            }
-        } else {
-            // still attached - so we can check the features to see if it's worth even trying to write the
-            // meta properties key
-            if (property.graph().features().vertex().supportsMetaProperties() && property.properties().hasNext()) {
-                writeMetaProperties(property, jsonGenerator, serializerProvider, typeSerializer, normalize);
-            }
-        }
-    }
-
-    private static void writeMetaProperties(final VertexProperty property, final JsonGenerator jsonGenerator,
-                                            final SerializerProvider serializerProvider,
-                                            final TypeSerializer typeSerializer, final boolean normalize) throws IOException {
-        jsonGenerator.writeObjectFieldStart(GraphSONTokens.PROPERTIES);
-        if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
-        final Iterator<Property<Object>> metaProperties = normalize ?
-                IteratorUtils.list(( Iterator<Property<Object>>) property.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : property.properties();
-        while (metaProperties.hasNext()) {
-            final Property<Object> metaProperty = metaProperties.next();
-            GraphSONUtil.writeWithType(metaProperty.key(), metaProperty.value(), jsonGenerator, serializerProvider, typeSerializer);
-        }
-        jsonGenerator.writeEndObject();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV1d0.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV1d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV1d0.java
new file mode 100644
index 0000000..2fc9e47
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV1d0.java
@@ -0,0 +1,465 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.graphson;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
+import org.apache.tinkerpop.gremlin.process.traversal.util.Metrics;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalExplanation;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Element;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.util.Comparators;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerationException;
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
+import org.apache.tinkerpop.shaded.jackson.core.JsonProcessingException;
+import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdKeySerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
+import org.javatuples.Pair;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * GraphSON serializers for graph-based objects such as vertices, edges, properties, and paths. These serializers
+ * present a generalized way to serialize the implementations of core interfaces.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+final class GraphSONSerializersV1d0 {
+
+    private GraphSONSerializersV1d0() {}
+
+    final static class VertexPropertyJacksonSerializer extends StdSerializer<VertexProperty> {
+
+        private final boolean normalize;
+
+        public VertexPropertyJacksonSerializer(final boolean normalize) {
+            super(VertexProperty.class);
+            this.normalize = normalize;
+        }
+
+        @Override
+        public void serialize(final VertexProperty property, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
+                throws IOException {
+            serializerVertexProperty(property, jsonGenerator, serializerProvider, null, normalize, true);
+        }
+
+        @Override
+        public void serializeWithType(final VertexProperty property, final JsonGenerator jsonGenerator,
+                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
+            serializerVertexProperty(property, jsonGenerator, serializerProvider, typeSerializer, normalize, true);
+        }
+    }
+
+    final static class PropertyJacksonSerializer extends StdSerializer<Property> {
+
+        public PropertyJacksonSerializer() {
+            super(Property.class);
+        }
+
+        @Override
+        public void serialize(final Property property, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
+                throws IOException {
+            ser(property, jsonGenerator, serializerProvider, null);
+        }
+        @Override
+        public void serializeWithType(final Property property, final JsonGenerator jsonGenerator,
+                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
+            ser(property, jsonGenerator, serializerProvider, typeSerializer);
+        }
+
+        private static void ser(final Property property, final JsonGenerator jsonGenerator,
+                                final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
+            jsonGenerator.writeStartObject();
+            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+            serializerProvider.defaultSerializeField(GraphSONTokens.KEY, property.key(), jsonGenerator);
+            serializerProvider.defaultSerializeField(GraphSONTokens.VALUE, property.value(), jsonGenerator);
+            jsonGenerator.writeEndObject();
+        }
+    }
+
+    final static class EdgeJacksonSerializer extends StdSerializer<Edge> {
+
+        private final boolean normalize;
+
+        public EdgeJacksonSerializer(final boolean normalize) {
+            super(Edge.class);
+            this.normalize = normalize;
+        }
+
+
+        @Override
+        public void serialize(final Edge edge, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
+                throws IOException {
+            ser(edge, jsonGenerator, serializerProvider, null);
+        }
+        @Override
+        public void serializeWithType(final Edge edge, final JsonGenerator jsonGenerator,
+                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
+            ser(edge, jsonGenerator, serializerProvider, typeSerializer);
+        }
+
+        private void ser(final Edge edge, final JsonGenerator jsonGenerator,
+                                final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
+            jsonGenerator.writeStartObject();
+            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+            GraphSONUtil.writeWithType(GraphSONTokens.ID, edge.id(), jsonGenerator, serializerProvider, typeSerializer);
+
+            jsonGenerator.writeStringField(GraphSONTokens.LABEL, edge.label());
+            jsonGenerator.writeStringField(GraphSONTokens.TYPE, GraphSONTokens.EDGE);
+            jsonGenerator.writeStringField(GraphSONTokens.IN_LABEL, edge.inVertex().label());
+            jsonGenerator.writeStringField(GraphSONTokens.OUT_LABEL, edge.outVertex().label());
+            GraphSONUtil.writeWithType(GraphSONTokens.IN, edge.inVertex().id(), jsonGenerator, serializerProvider, typeSerializer);
+            GraphSONUtil.writeWithType(GraphSONTokens.OUT, edge.outVertex().id(), jsonGenerator, serializerProvider, typeSerializer);
+            writeProperties(edge, jsonGenerator, serializerProvider, typeSerializer);
+            jsonGenerator.writeEndObject();
+        }
+
+        private void writeProperties(final Edge edge, final JsonGenerator jsonGenerator,
+                                            final SerializerProvider serializerProvider,
+                                            final TypeSerializer typeSerializer) throws IOException {
+            final Iterator<Property<Object>> elementProperties = normalize ?
+                    IteratorUtils.list(edge.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : edge.properties();
+            if (elementProperties.hasNext()) {
+                jsonGenerator.writeObjectFieldStart(GraphSONTokens.PROPERTIES);
+                if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+                while (elementProperties.hasNext()) {
+                    final Property<Object> elementProperty = elementProperties.next();
+                    GraphSONUtil.writeWithType(elementProperty.key(), elementProperty.value(), jsonGenerator, serializerProvider, typeSerializer);
+                }
+                jsonGenerator.writeEndObject();
+            }
+        }
+
+    }
+
+    final static class VertexJacksonSerializer extends StdSerializer<Vertex> {
+
+        private final boolean normalize;
+
+        public VertexJacksonSerializer(final boolean normalize) {
+            super(Vertex.class);
+            this.normalize = normalize;
+        }
+
+        @Override
+        public void serialize(final Vertex vertex, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
+                throws IOException {
+            ser(vertex, jsonGenerator, serializerProvider, null);
+        }
+
+        @Override
+        public void serializeWithType(final Vertex vertex, final JsonGenerator jsonGenerator,
+                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
+            ser(vertex, jsonGenerator, serializerProvider, typeSerializer);
+
+        }
+
+        private void ser(final Vertex vertex, final JsonGenerator jsonGenerator,
+                                final SerializerProvider serializerProvider, final TypeSerializer typeSerializer)
+                throws IOException {
+            jsonGenerator.writeStartObject();
+            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+            GraphSONUtil.writeWithType(GraphSONTokens.ID, vertex.id(), jsonGenerator, serializerProvider, typeSerializer);
+            jsonGenerator.writeStringField(GraphSONTokens.LABEL, vertex.label());
+            jsonGenerator.writeStringField(GraphSONTokens.TYPE, GraphSONTokens.VERTEX);
+            writeProperties(vertex, jsonGenerator, serializerProvider, typeSerializer);
+            jsonGenerator.writeEndObject();
+        }
+
+        private void writeProperties(final Vertex vertex, final JsonGenerator jsonGenerator,
+                                            final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
+            jsonGenerator.writeObjectFieldStart(GraphSONTokens.PROPERTIES);
+            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+
+            final List<String> keys = normalize ?
+                    IteratorUtils.list(vertex.keys().iterator(), Comparator.naturalOrder()) : new ArrayList<>(vertex.keys());
+            for (String key : keys) {
+                final Iterator<VertexProperty<Object>> vertexProperties = normalize ?
+                        IteratorUtils.list(vertex.properties(key), Comparators.PROPERTY_COMPARATOR).iterator() : vertex.properties(key);
+
+                if (vertexProperties.hasNext()) {
+                    jsonGenerator.writeArrayFieldStart(key);
+                    if (typeSerializer != null) {
+                        jsonGenerator.writeString(ArrayList.class.getName());
+                        jsonGenerator.writeStartArray();
+                    }
+
+                    while (vertexProperties.hasNext()) {
+                        serializerVertexProperty(vertexProperties.next(), jsonGenerator, serializerProvider, typeSerializer, normalize, false);
+                    }
+
+                    jsonGenerator.writeEndArray();
+                    if (typeSerializer != null) jsonGenerator.writeEndArray();
+                }
+            }
+
+            jsonGenerator.writeEndObject();
+        }
+
+    }
+
+    final static class PathJacksonSerializer extends StdSerializer<Path> {
+
+        public PathJacksonSerializer() {
+            super(Path.class);
+        }
+        @Override
+        public void serialize(final Path path, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
+                throws IOException, JsonGenerationException {
+            ser(path, jsonGenerator, null);
+        }
+
+        @Override
+        public void serializeWithType(final Path path, final JsonGenerator jsonGenerator,
+                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer)
+                throws IOException, JsonProcessingException {
+            ser(path, jsonGenerator, typeSerializer);
+        }
+        private static void ser(final Path path, final JsonGenerator jsonGenerator, final TypeSerializer typeSerializer)
+                throws IOException {
+            jsonGenerator.writeStartObject();
+            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+            jsonGenerator.writeObjectField(GraphSONTokens.LABELS, path.labels());
+            jsonGenerator.writeObjectField(GraphSONTokens.OBJECTS, path.objects());
+            jsonGenerator.writeEndObject();
+        }
+
+    }
+    
+    final static class TreeJacksonSerializer extends StdSerializer<Tree> {
+
+        public TreeJacksonSerializer() {
+            super(Tree.class);
+        }
+
+        @Override
+        public void serialize(final Tree tree, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) throws IOException, JsonGenerationException {
+            ser(tree, jsonGenerator, null);
+        }
+        
+        @Override
+        public void serializeWithType(final Tree tree, final JsonGenerator jsonGenerator,
+                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer)
+                throws IOException, JsonProcessingException {
+            ser(tree, jsonGenerator, typeSerializer);
+        }
+        
+        private static void ser(final Tree tree, final JsonGenerator jsonGenerator, final TypeSerializer typeSerializer)
+                throws IOException {
+            jsonGenerator.writeStartObject(); 
+            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+            
+            Set<Map.Entry<Element, Tree>> set = tree.entrySet();
+            for(Map.Entry<Element, Tree> entry : set)
+            {
+                jsonGenerator.writeObjectFieldStart(entry.getKey().id().toString());
+                if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+                jsonGenerator.writeObjectField(GraphSONTokens.KEY, entry.getKey()); 
+                jsonGenerator.writeObjectField(GraphSONTokens.VALUE, entry.getValue());
+                jsonGenerator.writeEndObject();
+            }
+            jsonGenerator.writeEndObject();
+        }
+    } 
+    
+    /**
+     * Maps in the JVM can have {@link Object} as a key, but in JSON they must be a {@link String}.
+     */
+    final static class GraphSONKeySerializer extends StdKeySerializer {
+
+        @Override
+        public void serialize(final Object o, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) throws IOException {
+            ser(o, jsonGenerator, serializerProvider);
+        }
+        @Override
+        public void serializeWithType(final Object o, final JsonGenerator jsonGenerator,
+                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
+            ser(o, jsonGenerator, serializerProvider);
+        }
+
+        private void ser(final Object o, final JsonGenerator jsonGenerator,
+                         final SerializerProvider serializerProvider) throws IOException {
+            if (Element.class.isAssignableFrom(o.getClass()))
+                jsonGenerator.writeFieldName((((Element) o).id()).toString());
+            else
+                super.serialize(o, jsonGenerator, serializerProvider);
+        }
+    }
+
+    final static class TraversalExplanationJacksonSerializer extends StdSerializer<TraversalExplanation> {
+        public TraversalExplanationJacksonSerializer() {
+            super(TraversalExplanation.class);
+        }
+
+        @Override
+        public void serialize(final TraversalExplanation traversalExplanation, final JsonGenerator jsonGenerator,
+                              final SerializerProvider serializerProvider) throws IOException {
+            ser(traversalExplanation, jsonGenerator);
+        }
+
+        @Override
+        public void serializeWithType(final TraversalExplanation value, final JsonGenerator gen,
+                                      final SerializerProvider serializers, final TypeSerializer typeSer) throws IOException {
+            ser(value, gen);
+        }
+
+        public void ser(final TraversalExplanation te, final JsonGenerator jsonGenerator) throws IOException {
+            final Map<String, Object> m = new HashMap<>();
+            m.put(GraphSONTokens.ORIGINAL, getStepsAsList(te.getOriginalTraversal()));
+
+            final List<Pair<TraversalStrategy, Traversal.Admin<?,?>>> strategyTraversals = te.getStrategyTraversals();
+
+            final List<Map<String,Object>> intermediates = new ArrayList<>();
+            for (final Pair<TraversalStrategy, Traversal.Admin<?, ?>> pair : strategyTraversals) {
+                final Map<String,Object> intermediate = new HashMap<>();
+                intermediate.put(GraphSONTokens.STRATEGY, pair.getValue0().toString());
+                intermediate.put(GraphSONTokens.CATEGORY, pair.getValue0().getTraversalCategory().getSimpleName());
+                intermediate.put(GraphSONTokens.TRAVERSAL, getStepsAsList(pair.getValue1()));
+                intermediates.add(intermediate);
+            }
+            m.put(GraphSONTokens.INTERMEDIATE, intermediates);
+
+            if (strategyTraversals.isEmpty())
+                m.put(GraphSONTokens.FINAL, getStepsAsList(te.getOriginalTraversal()));
+            else
+                m.put(GraphSONTokens.FINAL, getStepsAsList(strategyTraversals.get(strategyTraversals.size() - 1).getValue1()));
+
+            jsonGenerator.writeObject(m);
+        }
+
+        private List<String> getStepsAsList(final Traversal.Admin<?,?> t) {
+            final List<String> steps = new ArrayList<>();
+            t.getSteps().iterator().forEachRemaining(s -> steps.add(s.toString()));
+            return steps;
+        }
+    }
+
+    final static class TraversalMetricsJacksonSerializer extends StdSerializer<TraversalMetrics> {
+        public TraversalMetricsJacksonSerializer() {
+            super(TraversalMetrics.class);
+        }
+
+        @Override
+        public void serialize(final TraversalMetrics property, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
+                throws IOException {
+            serializeInternal(property, jsonGenerator);
+        }
+
+        @Override
+        public void serializeWithType(final TraversalMetrics property, final JsonGenerator jsonGenerator,
+                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
+            serializeInternal(property, jsonGenerator);
+        }
+
+        private static void serializeInternal(final TraversalMetrics traversalMetrics, final JsonGenerator jsonGenerator) throws IOException {
+            // creation of the map enables all the fields to be properly written with their type if required
+            final Map<String, Object> m = new HashMap<>();
+            m.put(GraphSONTokens.DURATION, traversalMetrics.getDuration(TimeUnit.NANOSECONDS) / 1000000d);
+            final List<Map<String, Object>> metrics = new ArrayList<>();
+            traversalMetrics.getMetrics().forEach(it -> metrics.add(metricsToMap(it)));
+            m.put(GraphSONTokens.METRICS, metrics);
+
+            jsonGenerator.writeObject(m);
+        }
+
+        private static Map<String, Object> metricsToMap(final Metrics metrics) {
+            final Map<String, Object> m = new HashMap<>();
+            m.put(GraphSONTokens.ID, metrics.getId());
+            m.put(GraphSONTokens.NAME, metrics.getName());
+            m.put(GraphSONTokens.COUNTS, metrics.getCounts());
+            m.put(GraphSONTokens.DURATION, metrics.getDuration(TimeUnit.NANOSECONDS) / 1000000d);
+
+            if (!metrics.getAnnotations().isEmpty()) {
+                m.put(GraphSONTokens.ANNOTATIONS, metrics.getAnnotations());
+            }
+
+            if (!metrics.getNested().isEmpty()) {
+                final List<Map<String, Object>> nested = new ArrayList<>();
+                metrics.getNested().forEach(it -> nested.add(metricsToMap(it)));
+                m.put(GraphSONTokens.METRICS, nested);
+            }
+            return m;
+        }
+    }
+
+    private static void serializerVertexProperty(final VertexProperty property, final JsonGenerator jsonGenerator,
+                                                 final SerializerProvider serializerProvider,
+                                                 final TypeSerializer typeSerializer, final boolean normalize,
+                                                 final boolean includeLabel) throws IOException {
+        jsonGenerator.writeStartObject();
+        if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+        GraphSONUtil.writeWithType(GraphSONTokens.ID, property.id(), jsonGenerator, serializerProvider, typeSerializer);
+        GraphSONUtil.writeWithType(GraphSONTokens.VALUE, property.value(), jsonGenerator, serializerProvider, typeSerializer);
+        if (includeLabel) jsonGenerator.writeStringField(GraphSONTokens.LABEL, property.label());
+        tryWriteMetaProperties(property, jsonGenerator, serializerProvider, typeSerializer, normalize);
+        jsonGenerator.writeEndObject();
+    }
+
+    private static void tryWriteMetaProperties(final VertexProperty property, final JsonGenerator jsonGenerator,
+                                               final SerializerProvider serializerProvider,
+                                               final TypeSerializer typeSerializer, final boolean normalize) throws IOException {
+        // when "detached" you can't check features of the graph it detached from so it has to be
+        // treated differently from a regular VertexProperty implementation.
+        if (property instanceof DetachedVertexProperty) {
+            // only write meta properties key if they exist
+            if (property.properties().hasNext()) {
+                writeMetaProperties(property, jsonGenerator, serializerProvider, typeSerializer, normalize);
+            }
+        } else {
+            // still attached - so we can check the features to see if it's worth even trying to write the
+            // meta properties key
+            if (property.graph().features().vertex().supportsMetaProperties() && property.properties().hasNext()) {
+                writeMetaProperties(property, jsonGenerator, serializerProvider, typeSerializer, normalize);
+            }
+        }
+    }
+
+    private static void writeMetaProperties(final VertexProperty property, final JsonGenerator jsonGenerator,
+                                            final SerializerProvider serializerProvider,
+                                            final TypeSerializer typeSerializer, final boolean normalize) throws IOException {
+        jsonGenerator.writeObjectFieldStart(GraphSONTokens.PROPERTIES);
+        if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
+        final Iterator<Property<Object>> metaProperties = normalize ?
+                IteratorUtils.list(( Iterator<Property<Object>>) property.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : property.properties();
+        while (metaProperties.hasNext()) {
+            final Property<Object> metaProperty = metaProperties.next();
+            GraphSONUtil.writeWithType(metaProperty.key(), metaProperty.value(), jsonGenerator, serializerProvider, typeSerializer);
+        }
+        jsonGenerator.writeEndObject();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2d0.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2d0.java
new file mode 100644
index 0000000..a689a11
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2d0.java
@@ -0,0 +1,580 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.graphson;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.MutablePath;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalMetrics;
+import org.apache.tinkerpop.gremlin.process.traversal.util.Metrics;
+import org.apache.tinkerpop.gremlin.process.traversal.util.MutableMetrics;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalExplanation;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Element;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.util.Comparators;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedProperty;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerationException;
+import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
+import org.apache.tinkerpop.shaded.jackson.core.JsonParser;
+import org.apache.tinkerpop.shaded.jackson.core.JsonProcessingException;
+import org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext;
+import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
+import org.apache.tinkerpop.shaded.jackson.databind.deser.std.StdDeserializer;
+import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdKeySerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdScalarSerializer;
+import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
+import org.javatuples.Pair;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+import static org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONUtil.safeWriteObjectField;
+
+/**
+ * GraphSON serializers for graph-based objects such as vertices, edges, properties, and paths. These serializers
+ * present a generalized way to serialize the implementations of core interfaces.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class GraphSONSerializersV2d0 {
+
+    private GraphSONSerializersV2d0() {
+    }
+
+    ////////////////////////////// SERIALIZERS /////////////////////////////////
+
+    final static class VertexJacksonSerializer extends StdScalarSerializer<Vertex> {
+
+        private final boolean normalize;
+
+        public VertexJacksonSerializer(final boolean normalize) {
+            super(Vertex.class);
+            this.normalize = normalize;
+        }
+
+        @Override
+        public void serialize(final Vertex vertex, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
+                throws IOException {
+            jsonGenerator.writeStartObject();
+
+            jsonGenerator.writeObjectField(GraphSONTokens.ID, vertex.id());
+            jsonGenerator.writeStringField(GraphSONTokens.LABEL, vertex.label());
+            writeProperties(vertex, jsonGenerator);
+
+            jsonGenerator.writeEndObject();
+
+        }
+
+        private void writeProperties(final Vertex vertex, final JsonGenerator jsonGenerator) throws IOException {
+            if (vertex.keys().size() == 0)
+                return;
+            jsonGenerator.writeFieldName(GraphSONTokens.PROPERTIES);
+            jsonGenerator.writeStartObject();
+
+            final List<String> keys = normalize ?
+                    IteratorUtils.list(vertex.keys().iterator(), Comparator.naturalOrder()) : new ArrayList<>(vertex.keys());
+            for (String key : keys) {
+                final Iterator<VertexProperty<Object>> vertexProperties = normalize ?
+                        IteratorUtils.list(vertex.properties(key), Comparators.PROPERTY_COMPARATOR).iterator() : vertex.properties(key);
+                if (vertexProperties.hasNext()) {
+                    jsonGenerator.writeFieldName(key);
+
+                    jsonGenerator.writeStartArray();
+                    while (vertexProperties.hasNext()) {
+                        jsonGenerator.writeObject(vertexProperties.next());
+                    }
+                    jsonGenerator.writeEndArray();
+                }
+            }
+
+            jsonGenerator.writeEndObject();
+        }
+    }
+
+    final static class EdgeJacksonSerializer extends StdScalarSerializer<Edge> {
+
+        private final boolean normalize;
+
+        public EdgeJacksonSerializer(final boolean normalize) {
+            super(Edge.class);
+            this.normalize = normalize;
+        }
+
+
+        @Override
+        public void serialize(final Edge edge, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
+                throws IOException {
+            jsonGenerator.writeStartObject();
+
+            jsonGenerator.writeObjectField(GraphSONTokens.ID, edge.id());
+            jsonGenerator.writeStringField(GraphSONTokens.LABEL, edge.label());
+            jsonGenerator.writeStringField(GraphSONTokens.IN_LABEL, edge.inVertex().label());
+            jsonGenerator.writeStringField(GraphSONTokens.OUT_LABEL, edge.outVertex().label());
+            jsonGenerator.writeObjectField(GraphSONTokens.IN, edge.inVertex().id());
+            jsonGenerator.writeObjectField(GraphSONTokens.OUT, edge.outVertex().id());
+            writeProperties(edge, jsonGenerator);
+
+            jsonGenerator.writeEndObject();
+        }
+
+        private void writeProperties(final Edge edge, final JsonGenerator jsonGenerator) throws IOException {
+            final Iterator<Property<Object>> elementProperties = normalize ?
+                    IteratorUtils.list(edge.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : edge.properties();
+            if (elementProperties.hasNext()) {
+                jsonGenerator.writeFieldName(GraphSONTokens.PROPERTIES);
+
+                jsonGenerator.writeStartObject();
+                elementProperties.forEachRemaining(
+                        prop -> safeWriteObjectField(jsonGenerator, prop.key(), prop)
+                );
+                jsonGenerator.writeEndObject();
+            }
+        }
+    }
+
+    final static class PropertyJacksonSerializer extends StdScalarSerializer<Property> {
+
+        public PropertyJacksonSerializer() {
+            super(Property.class);
+        }
+
+        @Override
+        public void serialize(final Property property, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
+                throws IOException {
+            jsonGenerator.writeStartObject();
+            jsonGenerator.writeObjectField(GraphSONTokens.KEY, property.key());
+            jsonGenerator.writeObjectField(GraphSONTokens.VALUE, property.value());
+            jsonGenerator.writeEndObject();
+        }
+    }
+
+    final static class VertexPropertyJacksonSerializer extends StdScalarSerializer<VertexProperty> {
+
+        private final boolean normalize;
+        private final boolean includeLabel;
+
+        public VertexPropertyJacksonSerializer(final boolean normalize, final boolean includeLabel) {
+            super(VertexProperty.class);
+            this.normalize = normalize;
+            this.includeLabel = includeLabel;
+        }
+
+        @Override
+        public void serialize(final VertexProperty property, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
+                throws IOException {
+            jsonGenerator.writeStartObject();
+
+            jsonGenerator.writeObjectField(GraphSONTokens.ID, property.id());
+            jsonGenerator.writeObjectField(GraphSONTokens.VALUE, property.value());
+            if (includeLabel)
+                jsonGenerator.writeStringField(GraphSONTokens.LABEL, property.label());
+            tryWriteMetaProperties(property, jsonGenerator, normalize);
+
+            jsonGenerator.writeEndObject();
+        }
+
+        private static void tryWriteMetaProperties(final VertexProperty property, final JsonGenerator jsonGenerator,
+                                                   final boolean normalize) throws IOException {
+            // when "detached" you can't check features of the graph it detached from so it has to be
+            // treated differently from a regular VertexProperty implementation.
+            if (property instanceof DetachedVertexProperty) {
+                // only write meta properties key if they exist
+                if (property.properties().hasNext()) {
+                    writeMetaProperties(property, jsonGenerator, normalize);
+                }
+            } else {
+                // still attached - so we can check the features to see if it's worth even trying to write the
+                // meta properties key
+                if (property.graph().features().vertex().supportsMetaProperties() && property.properties().hasNext()) {
+                    writeMetaProperties(property, jsonGenerator, normalize);
+                }
+            }
+        }
+
+        private static void writeMetaProperties(final VertexProperty property, final JsonGenerator jsonGenerator,
+                                                final boolean normalize) throws IOException {
+            jsonGenerator.writeFieldName(GraphSONTokens.PROPERTIES);
+            jsonGenerator.writeStartObject();
+
+            final Iterator<Property<Object>> metaProperties = normalize ?
+                    IteratorUtils.list((Iterator<Property<Object>>) property.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : property.properties();
+            while (metaProperties.hasNext()) {
+                final Property<Object> metaProperty = metaProperties.next();
+                jsonGenerator.writeObjectField(metaProperty.key(), metaProperty.value());
+            }
+
+            jsonGenerator.writeEndObject();
+        }
+
+
+    }
+
+    final static class PathJacksonSerializer extends StdScalarSerializer<Path> {
+
+        public PathJacksonSerializer() {
+            super(Path.class);
+        }
+
+        @Override
+        public void serialize(final Path path, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
+                throws IOException, JsonGenerationException {
+            jsonGenerator.writeStartObject();
+
+            jsonGenerator.writeObjectField(GraphSONTokens.LABELS, path.labels());
+            jsonGenerator.writeObjectField(GraphSONTokens.OBJECTS, path.objects());
+
+            jsonGenerator.writeEndObject();
+        }
+    }
+
+    final static class TreeJacksonSerializer extends StdScalarSerializer<Tree> {
+
+        public TreeJacksonSerializer() {
+            super(Tree.class);
+        }
+
+        @Override
+        public void serialize(final Tree tree, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) throws IOException, JsonGenerationException {
+            jsonGenerator.writeStartArray();
+            Set<Map.Entry<Element, Tree>> set = tree.entrySet();
+            for (Map.Entry<Element, Tree> entry : set) {
+                jsonGenerator.writeStartObject();
+                jsonGenerator.writeObjectField(GraphSONTokens.KEY, entry.getKey());
+                jsonGenerator.writeObjectField(GraphSONTokens.VALUE, entry.getValue());
+                jsonGenerator.writeEndObject();
+            }
+            jsonGenerator.writeEndArray();
+        }
+    }
+
+    final static class TraversalExplanationJacksonSerializer extends StdSerializer<TraversalExplanation> {
+        public TraversalExplanationJacksonSerializer() {
+            super(TraversalExplanation.class);
+        }
+
+        @Override
+        public void serialize(final TraversalExplanation traversalExplanation, final JsonGenerator jsonGenerator,
+                              final SerializerProvider serializerProvider) throws IOException {
+            final Map<String, Object> m = new HashMap<>();
+            m.put(GraphSONTokens.ORIGINAL, getStepsAsList(traversalExplanation.getOriginalTraversal()));
+
+            final List<Pair<TraversalStrategy, Traversal.Admin<?, ?>>> strategyTraversals = traversalExplanation.getStrategyTraversals();
+
+            final List<Map<String, Object>> intermediates = new ArrayList<>();
+            for (final Pair<TraversalStrategy, Traversal.Admin<?, ?>> pair : strategyTraversals) {
+                final Map<String, Object> intermediate = new HashMap<>();
+                intermediate.put(GraphSONTokens.STRATEGY, pair.getValue0().toString());
+                intermediate.put(GraphSONTokens.CATEGORY, pair.getValue0().getTraversalCategory().getSimpleName());
+                intermediate.put(GraphSONTokens.TRAVERSAL, getStepsAsList(pair.getValue1()));
+                intermediates.add(intermediate);
+            }
+            m.put(GraphSONTokens.INTERMEDIATE, intermediates);
+
+            if (strategyTraversals.isEmpty())
+                m.put(GraphSONTokens.FINAL, getStepsAsList(traversalExplanation.getOriginalTraversal()));
+            else
+                m.put(GraphSONTokens.FINAL, getStepsAsList(strategyTraversals.get(strategyTraversals.size() - 1).getValue1()));
+
+            jsonGenerator.writeObject(m);
+        }
+
+        private List<String> getStepsAsList(final Traversal.Admin<?, ?> t) {
+            final List<String> steps = new ArrayList<>();
+            t.getSteps().iterator().forEachRemaining(s -> steps.add(s.toString()));
+            return steps;
+        }
+    }
+
+    final static class IntegerGraphSONSerializer extends StdScalarSerializer<Integer> {
+        public IntegerGraphSONSerializer() {
+            super(Integer.class);
+        }
+
+        @Override
+        public void serialize(Integer integer, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            jsonGenerator.writeNumber(((Integer) integer).intValue());
+        }
+    }
+
+    final static class DoubleGraphSONSerializer extends StdScalarSerializer<Double> {
+        public DoubleGraphSONSerializer() {
+            super(Double.class);
+        }
+
+        @Override
+        public void serialize(Double doubleValue, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            jsonGenerator.writeNumber(doubleValue);
+        }
+    }
+
+    final static class TraversalMetricsJacksonSerializer extends StdScalarSerializer<TraversalMetrics> {
+        public TraversalMetricsJacksonSerializer() {
+            super(TraversalMetrics.class);
+        }
+
+        @Override
+        public void serialize(final TraversalMetrics traversalMetrics, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
+                throws IOException {
+            // creation of the map enables all the fields to be properly written with their type if required
+            final Map<String, Object> m = new HashMap<>();
+            m.put(GraphSONTokens.DURATION, traversalMetrics.getDuration(TimeUnit.NANOSECONDS) / 1000000d);
+            final List<Metrics> metrics = new ArrayList<>();
+            metrics.addAll(traversalMetrics.getMetrics());
+            m.put(GraphSONTokens.METRICS, metrics);
+
+            jsonGenerator.writeObject(m);
+        }
+    }
+
+    final static class MetricsJacksonSerializer extends StdScalarSerializer<Metrics> {
+        public MetricsJacksonSerializer() {
+            super(Metrics.class);
+        }
+
+        @Override
+        public void serialize(Metrics metrics, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            final Map<String, Object> m = new HashMap<>();
+            m.put(GraphSONTokens.ID, metrics.getId());
+            m.put(GraphSONTokens.NAME, metrics.getName());
+            m.put(GraphSONTokens.COUNTS, metrics.getCounts());
+            m.put(GraphSONTokens.DURATION, metrics.getDuration(TimeUnit.NANOSECONDS) / 1000000d);
+
+            if (!metrics.getAnnotations().isEmpty()) {
+                m.put(GraphSONTokens.ANNOTATIONS, metrics.getAnnotations());
+            }
+            if (!metrics.getNested().isEmpty()) {
+                final List<Metrics> nested = new ArrayList<>();
+                metrics.getNested().forEach(it -> nested.add(it));
+                m.put(GraphSONTokens.METRICS, nested);
+            }
+            jsonGenerator.writeObject(m);
+        }
+    }
+
+
+    /**
+     * Maps in the JVM can have {@link Object} as a key, but in JSON they must be a {@link String}.
+     */
+    final static class GraphSONKeySerializer extends StdKeySerializer {
+
+        @Override
+        public void serialize(final Object o, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) throws IOException {
+            ser(o, jsonGenerator, serializerProvider);
+        }
+
+        @Override
+        public void serializeWithType(final Object o, final JsonGenerator jsonGenerator,
+                                      final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
+            ser(o, jsonGenerator, serializerProvider);
+        }
+
+        private void ser(final Object o, final JsonGenerator jsonGenerator,
+                         final SerializerProvider serializerProvider) throws IOException {
+            if (Element.class.isAssignableFrom(o.getClass()))
+                jsonGenerator.writeFieldName((((Element) o).id()).toString());
+            else
+                super.serialize(o, jsonGenerator, serializerProvider);
+        }
+    }
+
+
+    //////////////////////////// DESERIALIZERS ///////////////////////////
+
+    abstract static class AbstractGraphObjectDeserializer<T> extends StdDeserializer<T> {
+
+        protected AbstractGraphObjectDeserializer(Class<T> clazz) {
+            super(clazz);
+        }
+
+        @Override
+        public T deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+
+            jsonParser.nextToken();
+            // This will automatically parse all typed stuff.
+            Map<String, Object> mapData = deserializationContext.readValue(jsonParser, Map.class);
+
+            return createObject(mapData);
+        }
+
+        abstract T createObject(Map<String, Object> data);
+    }
+
+
+    static class VertexJacksonDeserializer extends AbstractGraphObjectDeserializer<Vertex> {
+
+        public VertexJacksonDeserializer() {
+            super(Vertex.class);
+        }
+
+        @Override
+        Vertex createObject(Map<String, Object> vertexData) {
+            return new DetachedVertex(
+                    vertexData.get(GraphSONTokens.ID),
+                    vertexData.get(GraphSONTokens.LABEL).toString(),
+                    (Map<String, Object>) vertexData.get(GraphSONTokens.PROPERTIES)
+            );
+        }
+    }
+
+    static class EdgeJacksonDeserializer extends AbstractGraphObjectDeserializer<Edge> {
+
+        public EdgeJacksonDeserializer() {
+            super(Edge.class);
+        }
+
+        @Override
+        Edge createObject(Map<String, Object> edgeData) {
+            return new DetachedEdge(
+                    edgeData.get(GraphSONTokens.ID),
+                    edgeData.get(GraphSONTokens.LABEL).toString(),
+                    (Map) edgeData.get(GraphSONTokens.PROPERTIES),
+                    Pair.with(edgeData.get(GraphSONTokens.OUT), edgeData.get(GraphSONTokens.OUT_LABEL).toString()),
+                    Pair.with(edgeData.get(GraphSONTokens.IN), edgeData.get(GraphSONTokens.IN_LABEL).toString())
+            );
+        }
+    }
+
+    static class PropertyJacksonDeserializer extends AbstractGraphObjectDeserializer<Property> {
+
+        public PropertyJacksonDeserializer() {
+            super(Property.class);
+        }
+
+        @Override
+        Property createObject(Map<String, Object> propData) {
+            return new DetachedProperty(
+                    (String) propData.get(GraphSONTokens.KEY),
+                    propData.get(GraphSONTokens.VALUE));
+        }
+    }
+
+    static class PathJacksonDeserializer extends AbstractGraphObjectDeserializer<Path> {
+
+        public PathJacksonDeserializer() {
+            super(Path.class);
+        }
+
+        @Override
+        Path createObject(Map<String, Object> pathData) {
+            Path p = MutablePath.make();
+
+            List labels = (List) pathData.get(GraphSONTokens.LABELS);
+            List objects = (List) pathData.get(GraphSONTokens.OBJECTS);
+
+            for (int i = 0; i < objects.size(); i++) {
+                p.extend(objects.get(i), new HashSet((List) labels.get(i)));
+            }
+            return p;
+        }
+    }
+
+    static class VertexPropertyJacksonDeserializer extends AbstractGraphObjectDeserializer<VertexProperty> {
+
+        protected VertexPropertyJacksonDeserializer() {
+            super(VertexProperty.class);
+        }
+
+        @Override
+        VertexProperty createObject(Map<String, Object> propData) {
+            return new DetachedVertexProperty(
+                    propData.get(GraphSONTokens.ID),
+                    (String) propData.get(GraphSONTokens.LABEL),
+                    propData.get(GraphSONTokens.VALUE),
+                    (Map) propData.get(GraphSONTokens.PROPERTIES)
+            );
+        }
+    }
+
+    static class MetricsJacksonDeserializer extends AbstractGraphObjectDeserializer<Metrics> {
+        public MetricsJacksonDeserializer() {
+            super(Metrics.class);
+        }
+
+        @Override
+        Metrics createObject(Map<String, Object> metricsData) {
+            MutableMetrics m = new MutableMetrics((String)metricsData.get(GraphSONTokens.ID), (String)metricsData.get(GraphSONTokens.NAME));
+
+            m.setDuration(Math.round((Double) metricsData.get(GraphSONTokens.DURATION) * 1000000), TimeUnit.NANOSECONDS);
+            for (Map.Entry<String, Long> count : ((Map<String, Long>)metricsData.getOrDefault(GraphSONTokens.COUNTS, new HashMap<>(0))).entrySet()) {
+                m.setCount(count.getKey(), count.getValue());
+            }
+            for (Map.Entry<String, Long> count : ((Map<String, Long>) metricsData.getOrDefault(GraphSONTokens.ANNOTATIONS, new HashMap<>(0))).entrySet()) {
+                m.setAnnotation(count.getKey(), count.getValue());
+            }
+            for (MutableMetrics nested : (List<MutableMetrics>)metricsData.getOrDefault(GraphSONTokens.METRICS, new ArrayList<>(0))) {
+                m.addNested(nested);
+            }
+            return m;
+        }
+    }
+
+    static class TraversalMetricsJacksonDeserializer extends AbstractGraphObjectDeserializer<TraversalMetrics> {
+
+        public TraversalMetricsJacksonDeserializer() {
+            super(TraversalMetrics.class);
+        }
+
+        @Override
+        TraversalMetrics createObject(Map<String, Object> traversalMetricsData) {
+            return new DefaultTraversalMetrics(
+                    Math.round((Double) traversalMetricsData.get(GraphSONTokens.DURATION) * 1000000),
+                    (List<MutableMetrics>) traversalMetricsData.get(GraphSONTokens.METRICS)
+            );
+        }
+    }
+
+    static class TreeJacksonDeserializer extends StdDeserializer<Tree> {
+
+        public TreeJacksonDeserializer() {
+            super(Tree.class);
+        }
+
+        @Override
+        public Tree deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            List<Map> data = deserializationContext.readValue(jsonParser, List.class);
+            Tree t = new Tree();
+            for (Map<String, Object> entry : data) {
+                t.put(entry.get(GraphSONTokens.KEY), entry.get(GraphSONTokens.VALUE));
+            }
+            return t;
+        }
+    }
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTokens.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTokens.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTokens.java
index a91c2d4..e24cbab 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTokens.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTokens.java
@@ -26,6 +26,8 @@ public final class GraphSONTokens {
     private GraphSONTokens() {}
 
     public static final String CLASS = "@class";
+    public static final String VALUETYPE = "@type";
+    public static final String VALUEPROP = "@value";
     public static final String ID = "id";
     public static final String TYPE = "type";
     public static final String VALUE = "value";
@@ -44,6 +46,7 @@ public final class GraphSONTokens {
     public static final String OBJECTS = "objects";
     public static final String IN_LABEL = "inVLabel";
     public static final String OUT_LABEL = "outVLabel";
+    public static final String GREMLIN_TYPE_NAMESPACE = "gremlin";
 
     // TraversalExplanation Tokens
     public static final String ORIGINAL = "original";


[05/19] tinkerpop git commit: TINKERPOP-1274: GraphSON 2.0.

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead-typed.json
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead-typed.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead-typed.json
index 9679502..3806d5e 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead-typed.json
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead-typed.json
@@ -1,257 +1,257 @@
 {"@class":"java.util.HashMap","id":1,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":3059,"outV":153,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":276,"outV":5,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3704,"outV":3,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":4383,"outV":62,"properties":{"@class":"java.util.HashMap","weight":1}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":0,"inV":2,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1,"inV":3,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2,"inV":4,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3,"inV":5,"properties":{"@class":"j
 ava.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4,"inV":6,"properties":{"@class":"java.util.HashMap","weight":1}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7612,"inV":340}]],"writtenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7611,"inV":527}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",0],"value":"HEY BO DIDDLEY"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",2],"value":"cover"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",1],"value":5}]]}}
 {"@class":"java.util.HashMap","id":2,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":0,"outV":1,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":323,"outV":34,"properties":{"@class":"java.util.HashMap","weight":1}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":6190,"inV":123,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6191,"inV":50,"properties":{"@class":"java.util.HashMap","weight":1}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7666,"inV":525}]],"writtenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7665,"inV":525}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",3],"value":"IM A MAN"}]],"songType":["java.util.ArrayList",[{"@class":"j
 ava.util.HashMap","id":["java.lang.Long",5],"value":"cover"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",4],"value":1}]]}}
-{"@class":"java.util.HashMap","id":3,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":1,"outV":1,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2051,"outV":92,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":1412,"outV":83,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":6669,"outV":12,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1166,"outV":26,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":6286,"outV":49,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":910,"outV":91,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":526,"outV":120,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap"
 ,"id":273,"outV":5,"properties":{"@class":"java.util.HashMap","weight":40}},{"@class":"java.util.HashMap","id":2194,"outV":235,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1684,"outV":124,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3221,"outV":63,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1941,"outV":148,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":2712,"outV":13,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":6425,"outV":134,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5787,"outV":76,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5148,"outV":125,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":6692,"outV":141,"properties":{"@c
 lass":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6310,"outV":123,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6448,"outV":187,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":2225,"outV":226,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5042,"outV":209,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4789,"outV":114,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":1464,"outV":81,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2232,"outV":215,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4665,"outV":154,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2235,"outV":29,"properties":{"@class":"java.util.HashMap","weight":1
 63}},{"@class":"java.util.HashMap","id":6208,"outV":319,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":706,"outV":206,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":835,"outV":171,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5188,"outV":99,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1862,"outV":94,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":6343,"outV":21,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1735,"outV":82,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4937,"outV":277,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3276,"outV":160,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id"
 :3149,"outV":104,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1358,"outV":130,"properties":{"@class":"java.util.HashMap","weight":18}},{"@class":"java.util.HashMap","id":4304,"outV":110,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1105,"outV":59,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":722,"outV":80,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4182,"outV":54,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1499,"outV":164,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2397,"outV":179,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6623,"outV":127,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":351,"outV":178,"properties":{"@class
 ":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2018,"outV":149,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":7011,"outV":89,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5348,"outV":165,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2278,"outV":25,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":1255,"outV":27,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3048,"outV":153,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":5867,"outV":96,"properties":{"@class":"java.util.HashMap","weight":116}},{"@class":"java.util.HashMap","id":364,"outV":74,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":492,"outV":98,"properties":{"@class":"java.util.HashMap","weight":1}},{"@c
 lass":"java.util.HashMap","id":3948,"outV":138,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":4335,"outV":62,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3312,"outV":252,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5745,"outV":129,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4596,"outV":85,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5367,"outV":132,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":633,"outV":23,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":891,"outV":140,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5375,"outV":69,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6143,"out
 V":289,"properties":{"@class":"java.util.HashMap","weight":3}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":3712,"inV":27,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3713,"inV":110,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3714,"inV":215,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3715,"inV":127,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":3716,"inV":83,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3717,"inV":103,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3718,"inV":68,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3719,"inV":134,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"
 java.util.HashMap","id":3720,"inV":25,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":3721,"inV":125,"properties":{"@class":"java.util.HashMap","weight":54}},{"@class":"java.util.HashMap","id":3722,"inV":130,"properties":{"@class":"java.util.HashMap","weight":26}},{"@class":"java.util.HashMap","id":3723,"inV":141,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3724,"inV":145,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3725,"inV":319,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3726,"inV":12,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3727,"inV":160,"properties":{"@class":"java.util.HashMap","weight":37}},{"@class":"java.util.HashMap","id":3728,"inV":70,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3729,"inV":123,"pr
 operties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3730,"inV":129,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3731,"inV":30,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3732,"inV":148,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3733,"inV":211,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3734,"inV":87,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":3735,"inV":164,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3736,"inV":64,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3737,"inV":320,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3738,"inV":61,"properties":{"@class":"java.util.HashMap","weigh
 t":3}},{"@class":"java.util.HashMap","id":3739,"inV":210,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3740,"inV":50,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":3741,"inV":128,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3742,"inV":315,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3743,"inV":261,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3744,"inV":213,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":3745,"inV":72,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3746,"inV":38,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3747,"inV":204,"properties":{"@class":"java.util.HashMap","weight":14}},{"@class":"java.util.HashMap","id":37
 48,"inV":62,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3749,"inV":150,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":3750,"inV":309,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3751,"inV":131,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3752,"inV":151,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3753,"inV":321,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3754,"inV":90,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3755,"inV":82,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3756,"inV":120,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3757,"inV":46,"properties":{"@class":"java.util.
 HashMap","weight":5}},{"@class":"java.util.HashMap","id":3758,"inV":157,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3759,"inV":59,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3760,"inV":81,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3761,"inV":86,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3762,"inV":140,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3763,"inV":201,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3764,"inV":214,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3765,"inV":185,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3766,"inV":216,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.Has
 hMap","id":3767,"inV":217,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3768,"inV":236,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3769,"inV":193,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3770,"inV":79,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3771,"inV":84,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3772,"inV":23,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3773,"inV":31,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3774,"inV":240,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3775,"inV":292,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3776,"inV":9,"properties":{"@class":
 "java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3777,"inV":259,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3694,"inV":5,"properties":{"@class":"java.util.HashMap","weight":57}},{"@class":"java.util.HashMap","id":3695,"inV":114,"properties":{"@class":"java.util.HashMap","weight":30}},{"@class":"java.util.HashMap","id":3696,"inV":74,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3697,"inV":78,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3698,"inV":10,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3699,"inV":26,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3700,"inV":153,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":3701,"inV":4,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.
 util.HashMap","id":3702,"inV":317,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3703,"inV":13,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3704,"inV":1,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3705,"inV":21,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3706,"inV":57,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3707,"inV":122,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3708,"inV":318,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3709,"inV":94,"properties":{"@class":"java.util.HashMap","weight":26}},{"@class":"java.util.HashMap","id":3710,"inV":96,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":3711,"inV":124,"properties":{"
 @class":"java.util.HashMap","weight":15}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7808,"inV":351}]],"writtenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7807,"inV":671}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",6],"value":"NOT FADE AWAY"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",8],"value":"cover"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",7],"value":531}]]}}
-{"@class":"java.util.HashMap","id":4,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":128,"outV":97,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1664,"outV":267,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2,"outV":1,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4099,"outV":48,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1667,"outV":124,"properties":{"@class":"java.util.HashMap","weight":15}},{"@class":"java.util.HashMap","id":899,"outV":140,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1156,"outV":26,"properties":{"@class":"java.util.HashMap","weight":16}},{"@class":"java.util.HashMap","id":773,"outV":122,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.Hash
 Map","id":6534,"outV":242,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6664,"outV":12,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":1032,"outV":73,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5129,"outV":222,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5387,"outV":69,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5517,"outV":43,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5006,"outV":30,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6030,"outV":204,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2063,"outV":92,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":915,"outV":91,"properties":{"@
 class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6940,"outV":84,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":2464,"outV":68,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5795,"outV":76,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3620,"outV":24,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":4772,"outV":114,"properties":{"@class":"java.util.HashMap","weight":25}},{"@class":"java.util.HashMap","id":2982,"outV":14,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3367,"outV":184,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":2345,"outV":87,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2861,"outV":101,"properties":{"@class":"java.util.HashMap","weight":6}}
 ,{"@class":"java.util.HashMap","id":1840,"outV":275,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5425,"outV":102,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":180,"outV":70,"properties":{"@class":"java.util.HashMap","weight":46}},{"@class":"java.util.HashMap","id":2613,"outV":158,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5562,"outV":162,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5434,"outV":217,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1469,"outV":81,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":446,"outV":38,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":2494,"outV":90,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":326
 6,"outV":160,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":326,"outV":34,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6855,"outV":64,"properties":{"@class":"java.util.HashMap","weight":12}},{"@class":"java.util.HashMap","id":583,"outV":120,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":73,"outV":46,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":4425,"outV":212,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4941,"outV":86,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":1613,"outV":210,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6350,"outV":21,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3535,"outV":201,"properties":{"@class":"java
 .util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":980,"outV":11,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5206,"outV":99,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1494,"outV":164,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5847,"outV":61,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6490,"outV":187,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2781,"outV":15,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5600,"outV":42,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":353,"outV":74,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":5474,"outV":79,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java
 .util.HashMap","id":3811,"outV":88,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":1891,"outV":103,"properties":{"@class":"java.util.HashMap","weight":19}},{"@class":"java.util.HashMap","id":5989,"outV":50,"properties":{"@class":"java.util.HashMap","weight":12}},{"@class":"java.util.HashMap","id":4327,"outV":110,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2538,"outV":57,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3050,"outV":153,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":4970,"outV":236,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2283,"outV":25,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":236,"outV":145,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6126,"outV":72,"
 properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5232,"outV":214,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":4594,"outV":85,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4084,"outV":109,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1652,"outV":213,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3701,"outV":3,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5621,"outV":22,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":629,"outV":23,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":7029,"outV":89,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5238,"outV":32,"properties":{"@class":"java.util.HashMap"
 ,"weight":3}},{"@class":"java.util.HashMap","id":2684,"outV":13,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":3325,"outV":268,"properties":{"@class":"java.util.HashMap","weight":1}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":5120,"inV":40,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":5121,"inV":33,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5122,"inV":79,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5123,"inV":292,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5071,"inV":50,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":5072,"inV":12,"properties":{"@class":"java.util.HashMap","weight":26}},{"@class":"java.util.HashMap","id":5073,"inV":18,"properties"
 :{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5074,"inV":24,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":5075,"inV":23,"properties":{"@class":"java.util.HashMap","weight":63}},{"@class":"java.util.HashMap","id":5076,"inV":13,"properties":{"@class":"java.util.HashMap","weight":12}},{"@class":"java.util.HashMap","id":5077,"inV":10,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5078,"inV":11,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5079,"inV":26,"properties":{"@class":"java.util.HashMap","weight":18}},{"@class":"java.util.HashMap","id":5080,"inV":22,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5081,"inV":16,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5082,"inV":49,"properties":{"@class":"java.util.HashMap","weight":1}},{"@cl
 ass":"java.util.HashMap","id":5083,"inV":25,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5084,"inV":51,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5085,"inV":15,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5086,"inV":112,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5087,"inV":121,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5088,"inV":32,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":5089,"inV":68,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5090,"inV":120,"properties":{"@class":"java.util.HashMap","weight":77}},{"@class":"java.util.HashMap","id":5091,"inV":103,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5092,"inV":42,"pr
 operties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5093,"inV":85,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5094,"inV":76,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":5095,"inV":181,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5096,"inV":14,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5097,"inV":122,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5098,"inV":153,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5099,"inV":96,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5100,"inV":82,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5101,"inV":110,"properties":{"@class":"java.util.HashMap","weight"
 :1}},{"@class":"java.util.HashMap","id":5102,"inV":19,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":5103,"inV":129,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5104,"inV":84,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5105,"inV":88,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":5106,"inV":97,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5107,"inV":114,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5108,"inV":30,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":5109,"inV":31,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":5110,"inV":69,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5111,"inV"
 :127,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5112,"inV":60,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5113,"inV":39,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5114,"inV":21,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5115,"inV":117,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5116,"inV":78,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5117,"inV":38,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5118,"inV":169,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5119,"inV":118,"properties":{"@class":"java.util.HashMap","weight":1}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7064,"inV":340}]],"writ
 tenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7063,"inV":339}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",9],"value":"BERTHA"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",11],"value":"original"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",10],"value":394}]]}}
-{"@class":"java.util.HashMap","id":5,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":962,"outV":67,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":194,"outV":70,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":3,"outV":1,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5446,"outV":231,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":6344,"outV":21,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":6666,"outV":12,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1738,"outV":82,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1867,"outV":94,"properties":{"@class":"java.util.HashMap","weight":15}},{"@class":"java.util.HashMap
 ","id":4300,"outV":110,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":847,"outV":171,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2832,"outV":101,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":6032,"outV":115,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1170,"outV":26,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5330,"outV":238,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1491,"outV":164,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":1429,"outV":83,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3033,"outV":14,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6298,"outV":49,"properties":{"@
 class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1373,"outV":130,"properties":{"@class":"java.util.HashMap","weight":11}},{"@class":"java.util.HashMap","id":4447,"outV":113,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5151,"outV":125,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":6431,"outV":134,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5343,"outV":165,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":1953,"outV":148,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":2274,"outV":25,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":1634,"outV":210,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":100,"outV":46,"properties":{"@class":"java.util.HashMap","weight"
 :1}},{"@class":"java.util.HashMap","id":933,"outV":91,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2021,"outV":149,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6694,"outV":141,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":4009,"outV":225,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":682,"outV":219,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3694,"outV":3,"properties":{"@class":"java.util.HashMap","weight":57}},{"@class":"java.util.HashMap","id":4718,"outV":186,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":3055,"outV":153,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":2736,"outV":13,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id"
 :2480,"outV":68,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5426,"outV":102,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6899,"outV":147,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5879,"outV":96,"properties":{"@class":"java.util.HashMap","weight":22}},{"@class":"java.util.HashMap","id":6201,"outV":319,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5370,"outV":132,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2236,"outV":29,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":4604,"outV":85,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":700,"outV":206,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5759,"outV":129,"properties":{"@class
 ":"java.util.HashMap","weight":6}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":273,"inV":3,"properties":{"@class":"java.util.HashMap","weight":40}},{"@class":"java.util.HashMap","id":274,"inV":26,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":275,"inV":114,"properties":{"@class":"java.util.HashMap","weight":40}},{"@class":"java.util.HashMap","id":276,"inV":1,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":277,"inV":74,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":278,"inV":122,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":279,"inV":133,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":280,"inV":83,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":281,"inV":153,"
 properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":282,"inV":159,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":283,"inV":13,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":284,"inV":25,"properties":{"@class":"java.util.HashMap","weight":19}},{"@class":"java.util.HashMap","id":285,"inV":96,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":286,"inV":160,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":287,"inV":32,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":288,"inV":120,"properties":{"@class":"java.util.HashMap","weight":16}},{"@class":"java.util.HashMap","id":289,"inV":50,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":290,"inV":116,"properties":{"@class":"java.util.HashMap","weight":1}}
 ,{"@class":"java.util.HashMap","id":291,"inV":127,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":292,"inV":65,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":293,"inV":130,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":294,"inV":125,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":295,"inV":70,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":296,"inV":134,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":297,"inV":161,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":298,"inV":162,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":299,"inV":124,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":300,"inV":38,"pro
 perties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":301,"inV":29,"properties":{"@class":"java.util.HashMap","weight":11}},{"@class":"java.util.HashMap","id":302,"inV":163,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":303,"inV":94,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":304,"inV":85,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":305,"inV":164,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":306,"inV":64,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":307,"inV":150,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":308,"inV":165,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":309,"inV":92,"properties":{"@class":"java.util.HashMap","weight":1}},{"@c
 lass":"java.util.HashMap","id":310,"inV":140,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":311,"inV":166,"properties":{"@class":"java.util.HashMap","weight":1}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7582,"inV":340}]],"writtenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7581,"inV":446}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",12],"value":"GOING DOWN THE ROAD FEELING BAD"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",14],"value":"cover"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",13],"value":293}]]}}
+{"@class":"java.util.HashMap","id":3,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":1,"outV":1,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2051,"outV":92,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":1412,"outV":83,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":6669,"outV":12,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":526,"outV":120,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":910,"outV":91,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":1166,"outV":26,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":6286,"outV":49,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap"
 ,"id":273,"outV":5,"properties":{"@class":"java.util.HashMap","weight":40}},{"@class":"java.util.HashMap","id":2194,"outV":235,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1684,"outV":124,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1941,"outV":148,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3221,"outV":63,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2712,"outV":13,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":6425,"outV":134,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5787,"outV":76,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5148,"outV":125,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":6692,"outV":141,"properties":{"@c
 lass":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6310,"outV":123,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6448,"outV":187,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":2225,"outV":226,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5042,"outV":209,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4789,"outV":114,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":1464,"outV":81,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2232,"outV":215,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4665,"outV":154,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2235,"outV":29,"properties":{"@class":"java.util.HashMap","weight":1
 63}},{"@class":"java.util.HashMap","id":6208,"outV":319,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":706,"outV":206,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":835,"outV":171,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5188,"outV":99,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1862,"outV":94,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":1735,"outV":82,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6343,"outV":21,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4937,"outV":277,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3276,"outV":160,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id"
 :3149,"outV":104,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1358,"outV":130,"properties":{"@class":"java.util.HashMap","weight":18}},{"@class":"java.util.HashMap","id":4304,"outV":110,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1105,"outV":59,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":722,"outV":80,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4182,"outV":54,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1499,"outV":164,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2397,"outV":179,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":351,"outV":178,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6623,"outV":127,"properties":{"@class
 ":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":2018,"outV":149,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":7011,"outV":89,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5348,"outV":165,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2278,"outV":25,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":1255,"outV":27,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3048,"outV":153,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":5867,"outV":96,"properties":{"@class":"java.util.HashMap","weight":116}},{"@class":"java.util.HashMap","id":364,"outV":74,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":492,"outV":98,"properties":{"@class":"java.util.HashMap","weight":1}},{"@c
 lass":"java.util.HashMap","id":3948,"outV":138,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":4335,"outV":62,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3312,"outV":252,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5745,"outV":129,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":4596,"outV":85,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5367,"outV":132,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":633,"outV":23,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":891,"outV":140,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5375,"outV":69,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6143,"out
 V":289,"properties":{"@class":"java.util.HashMap","weight":3}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":3712,"inV":27,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3713,"inV":110,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3714,"inV":215,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3715,"inV":127,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":3716,"inV":83,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3717,"inV":103,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3718,"inV":68,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3719,"inV":134,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"
 java.util.HashMap","id":3720,"inV":25,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":3721,"inV":125,"properties":{"@class":"java.util.HashMap","weight":54}},{"@class":"java.util.HashMap","id":3722,"inV":130,"properties":{"@class":"java.util.HashMap","weight":26}},{"@class":"java.util.HashMap","id":3723,"inV":141,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3724,"inV":145,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3725,"inV":319,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3726,"inV":12,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3727,"inV":160,"properties":{"@class":"java.util.HashMap","weight":37}},{"@class":"java.util.HashMap","id":3728,"inV":70,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3729,"inV":123,"pr
 operties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3730,"inV":129,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3731,"inV":30,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3732,"inV":148,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3733,"inV":211,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3734,"inV":87,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":3735,"inV":164,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3736,"inV":64,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3737,"inV":320,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3738,"inV":61,"properties":{"@class":"java.util.HashMap","weigh
 t":3}},{"@class":"java.util.HashMap","id":3739,"inV":210,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3740,"inV":50,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":3741,"inV":128,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3742,"inV":315,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3743,"inV":261,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3744,"inV":213,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":3745,"inV":72,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3746,"inV":38,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3747,"inV":204,"properties":{"@class":"java.util.HashMap","weight":14}},{"@class":"java.util.HashMap","id":37
 48,"inV":62,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3749,"inV":150,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":3750,"inV":309,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3751,"inV":131,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3752,"inV":151,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3753,"inV":321,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3754,"inV":90,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3755,"inV":82,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3756,"inV":120,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3757,"inV":46,"properties":{"@class":"java.util.
 HashMap","weight":5}},{"@class":"java.util.HashMap","id":3758,"inV":157,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3759,"inV":59,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3760,"inV":81,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3761,"inV":86,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3762,"inV":140,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3763,"inV":201,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3764,"inV":214,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3765,"inV":185,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3766,"inV":216,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.Has
 hMap","id":3767,"inV":217,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3768,"inV":236,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3769,"inV":193,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3770,"inV":79,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3771,"inV":84,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3772,"inV":23,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3773,"inV":31,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3774,"inV":240,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3775,"inV":292,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3776,"inV":9,"properties":{"@class":
 "java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3777,"inV":259,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3694,"inV":5,"properties":{"@class":"java.util.HashMap","weight":57}},{"@class":"java.util.HashMap","id":3695,"inV":114,"properties":{"@class":"java.util.HashMap","weight":30}},{"@class":"java.util.HashMap","id":3696,"inV":74,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3697,"inV":78,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3698,"inV":10,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3699,"inV":26,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3700,"inV":153,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":3701,"inV":4,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.
 util.HashMap","id":3702,"inV":317,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3703,"inV":13,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3704,"inV":1,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3705,"inV":21,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3706,"inV":57,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3707,"inV":122,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3708,"inV":318,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3709,"inV":94,"properties":{"@class":"java.util.HashMap","weight":26}},{"@class":"java.util.HashMap","id":3710,"inV":96,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":3711,"inV":124,"properties":{"
 @class":"java.util.HashMap","weight":15}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7808,"inV":351}]],"writtenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7807,"inV":671}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",6],"value":"NOT FADE AWAY"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",8],"value":"cover"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",7],"value":531}]]}}
+{"@class":"java.util.HashMap","id":4,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":128,"outV":97,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1664,"outV":267,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2,"outV":1,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":899,"outV":140,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1667,"outV":124,"properties":{"@class":"java.util.HashMap","weight":15}},{"@class":"java.util.HashMap","id":4099,"outV":48,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1156,"outV":26,"properties":{"@class":"java.util.HashMap","weight":16}},{"@class":"java.util.HashMap","id":773,"outV":122,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.Hash
 Map","id":6534,"outV":242,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1032,"outV":73,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6664,"outV":12,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5129,"outV":222,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5387,"outV":69,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5517,"outV":43,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5006,"outV":30,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6030,"outV":204,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2063,"outV":92,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":915,"outV":91,"properties":{"@
 class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6940,"outV":84,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":2464,"outV":68,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5795,"outV":76,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3620,"outV":24,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":4772,"outV":114,"properties":{"@class":"java.util.HashMap","weight":25}},{"@class":"java.util.HashMap","id":2982,"outV":14,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3367,"outV":184,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":2345,"outV":87,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2861,"outV":101,"properties":{"@class":"java.util.HashMap","weight":6}}
 ,{"@class":"java.util.HashMap","id":1840,"outV":275,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5425,"outV":102,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":180,"outV":70,"properties":{"@class":"java.util.HashMap","weight":46}},{"@class":"java.util.HashMap","id":2613,"outV":158,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5434,"outV":217,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5562,"outV":162,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":1469,"outV":81,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":446,"outV":38,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":2494,"outV":90,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":326
 6,"outV":160,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":326,"outV":34,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":583,"outV":120,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6855,"outV":64,"properties":{"@class":"java.util.HashMap","weight":12}},{"@class":"java.util.HashMap","id":73,"outV":46,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":4425,"outV":212,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1613,"outV":210,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":4941,"outV":86,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6350,"outV":21,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3535,"outV":201,"properties":{"@class":"java
 .util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":980,"outV":11,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":1494,"outV":164,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5206,"outV":99,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5847,"outV":61,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6490,"outV":187,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2781,"outV":15,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5600,"outV":42,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":353,"outV":74,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":5474,"outV":79,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java
 .util.HashMap","id":1891,"outV":103,"properties":{"@class":"java.util.HashMap","weight":19}},{"@class":"java.util.HashMap","id":3811,"outV":88,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5989,"outV":50,"properties":{"@class":"java.util.HashMap","weight":12}},{"@class":"java.util.HashMap","id":4327,"outV":110,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":2538,"outV":57,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":3050,"outV":153,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":4970,"outV":236,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2283,"outV":25,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":236,"outV":145,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6126,"outV":72,"
 properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5232,"outV":214,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":4594,"outV":85,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1652,"outV":213,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":4084,"outV":109,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":629,"outV":23,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":3701,"outV":3,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5621,"outV":22,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":7029,"outV":89,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5238,"outV":32,"properties":{"@class":"java.util.HashMap"
 ,"weight":3}},{"@class":"java.util.HashMap","id":2684,"outV":13,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":3325,"outV":268,"properties":{"@class":"java.util.HashMap","weight":1}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":5120,"inV":40,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":5121,"inV":33,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5122,"inV":79,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5123,"inV":292,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5071,"inV":50,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":5072,"inV":12,"properties":{"@class":"java.util.HashMap","weight":26}},{"@class":"java.util.HashMap","id":5073,"inV":18,"properties"
 :{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5074,"inV":24,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":5075,"inV":23,"properties":{"@class":"java.util.HashMap","weight":63}},{"@class":"java.util.HashMap","id":5076,"inV":13,"properties":{"@class":"java.util.HashMap","weight":12}},{"@class":"java.util.HashMap","id":5077,"inV":10,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5078,"inV":11,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5079,"inV":26,"properties":{"@class":"java.util.HashMap","weight":18}},{"@class":"java.util.HashMap","id":5080,"inV":22,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5081,"inV":16,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5082,"inV":49,"properties":{"@class":"java.util.HashMap","weight":1}},{"@cl
 ass":"java.util.HashMap","id":5083,"inV":25,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5084,"inV":51,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5085,"inV":15,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5086,"inV":112,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5087,"inV":121,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5088,"inV":32,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":5089,"inV":68,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5090,"inV":120,"properties":{"@class":"java.util.HashMap","weight":77}},{"@class":"java.util.HashMap","id":5091,"inV":103,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5092,"inV":42,"pr
 operties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5093,"inV":85,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5094,"inV":76,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":5095,"inV":181,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5096,"inV":14,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5097,"inV":122,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5098,"inV":153,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5099,"inV":96,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5100,"inV":82,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5101,"inV":110,"properties":{"@class":"java.util.HashMap","weight"
 :1}},{"@class":"java.util.HashMap","id":5102,"inV":19,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":5103,"inV":129,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5104,"inV":84,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5105,"inV":88,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":5106,"inV":97,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5107,"inV":114,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5108,"inV":30,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":5109,"inV":31,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":5110,"inV":69,"properties":{"@class":"java.util.HashMap","weight":4}},{"@class":"java.util.HashMap","id":5111,"inV"
 :127,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5112,"inV":60,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5113,"inV":39,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5114,"inV":21,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5115,"inV":117,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5116,"inV":78,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5117,"inV":38,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5118,"inV":169,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5119,"inV":118,"properties":{"@class":"java.util.HashMap","weight":1}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7064,"inV":340}]],"writ
 tenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7063,"inV":339}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",9],"value":"BERTHA"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",11],"value":"original"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",10],"value":394}]]}}
+{"@class":"java.util.HashMap","id":5,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":194,"outV":70,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":962,"outV":67,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":3,"outV":1,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5446,"outV":231,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":6344,"outV":21,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":1738,"outV":82,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6666,"outV":12,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1867,"outV":94,"properties":{"@class":"java.util.HashMap","weight":15}},{"@class":"java.util.HashMap
 ","id":4300,"outV":110,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":847,"outV":171,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2832,"outV":101,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":6032,"outV":115,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1170,"outV":26,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5330,"outV":238,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1491,"outV":164,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":1429,"outV":83,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":3033,"outV":14,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6298,"outV":49,"properties":{"@
 class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1373,"outV":130,"properties":{"@class":"java.util.HashMap","weight":11}},{"@class":"java.util.HashMap","id":4447,"outV":113,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5151,"outV":125,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":5343,"outV":165,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":6431,"outV":134,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":1953,"outV":148,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":1634,"outV":210,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2274,"outV":25,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":100,"outV":46,"properties":{"@class":"java.util.HashMap","weight"
 :1}},{"@class":"java.util.HashMap","id":933,"outV":91,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2021,"outV":149,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6694,"outV":141,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":4009,"outV":225,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":682,"outV":219,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":3694,"outV":3,"properties":{"@class":"java.util.HashMap","weight":57}},{"@class":"java.util.HashMap","id":4718,"outV":186,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":3055,"outV":153,"properties":{"@class":"java.util.HashMap","weight":9}},{"@class":"java.util.HashMap","id":2480,"outV":68,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id"
 :2736,"outV":13,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5426,"outV":102,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":6899,"outV":147,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5879,"outV":96,"properties":{"@class":"java.util.HashMap","weight":22}},{"@class":"java.util.HashMap","id":6201,"outV":319,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5370,"outV":132,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":700,"outV":206,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2236,"outV":29,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":4604,"outV":85,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5759,"outV":129,"properties":{"@class
 ":"java.util.HashMap","weight":6}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":273,"inV":3,"properties":{"@class":"java.util.HashMap","weight":40}},{"@class":"java.util.HashMap","id":274,"inV":26,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":275,"inV":114,"properties":{"@class":"java.util.HashMap","weight":40}},{"@class":"java.util.HashMap","id":276,"inV":1,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":277,"inV":74,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":278,"inV":122,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":279,"inV":133,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":280,"inV":83,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":281,"inV":153,"
 properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":282,"inV":159,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":283,"inV":13,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":284,"inV":25,"properties":{"@class":"java.util.HashMap","weight":19}},{"@class":"java.util.HashMap","id":285,"inV":96,"properties":{"@class":"java.util.HashMap","weight":10}},{"@class":"java.util.HashMap","id":286,"inV":160,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":287,"inV":32,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":288,"inV":120,"properties":{"@class":"java.util.HashMap","weight":16}},{"@class":"java.util.HashMap","id":289,"inV":50,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":290,"inV":116,"properties":{"@class":"java.util.HashMap","weight":1}}
 ,{"@class":"java.util.HashMap","id":291,"inV":127,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":292,"inV":65,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":293,"inV":130,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":294,"inV":125,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":295,"inV":70,"properties":{"@class":"java.util.HashMap","weight":13}},{"@class":"java.util.HashMap","id":296,"inV":134,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":297,"inV":161,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":298,"inV":162,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":299,"inV":124,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":300,"inV":38,"pro
 perties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":301,"inV":29,"properties":{"@class":"java.util.HashMap","weight":11}},{"@class":"java.util.HashMap","id":302,"inV":163,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":303,"inV":94,"properties":{"@class":"java.util.HashMap","weight":5}},{"@class":"java.util.HashMap","id":304,"inV":85,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":305,"inV":164,"properties":{"@class":"java.util.HashMap","weight":6}},{"@class":"java.util.HashMap","id":306,"inV":64,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":307,"inV":150,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":308,"inV":165,"properties":{"@class":"java.util.HashMap","weight":7}},{"@class":"java.util.HashMap","id":309,"inV":92,"properties":{"@class":"java.util.HashMap","weight":1}},{"@c
 lass":"java.util.HashMap","id":310,"inV":140,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":311,"inV":166,"properties":{"@class":"java.util.HashMap","weight":1}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7582,"inV":340}]],"writtenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7581,"inV":446}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",12],"value":"GOING DOWN THE ROAD FEELING BAD"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",14],"value":"cover"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",13],"value":293}]]}}
 {"@class":"java.util.HashMap","id":6,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":4,"outV":1,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2023,"outV":282,"properties":{"@class":"java.util.HashMap","weight":1}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":2406,"inV":293,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2407,"inV":96,"properties":{"@class":"java.util.HashMap","weight":1}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7782,"inV":351}]],"writtenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7781,"inV":527}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",15],"value":"MONA"}]],"songType":["java.util.ArrayList",[{"@class":"ja
 va.util.HashMap","id":["java.lang.Long",17],"value":"cover"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",16],"value":1}]]}}
 {"@class":"java.util.HashMap","id":7,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":2607,"outV":295,"properties":{"@class":"java.util.HashMap","weight":1}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":5,"inV":8,"properties":{"@class":"java.util.HashMap","weight":1}}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",18],"value":"WHERE HAVE THE HEROES GONE"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",20],"value":""}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",19],"value":0}]]}}
 {"@class":"java.util.HashMap","id":8,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":4705,"outV":111,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5,"outV":7,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":5901,"outV":96,"properties":{"@class":"java.util.HashMap","weight":1}}]]},"outE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":2976,"inV":302,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2977,"inV":96,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":2978,"inV":72,"properties":{"@class":"java.util.HashMap","weight":1}}]],"sungBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7814,"inV":351}]],"writtenBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":7813,
 "inV":674}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",21],"value":"OH BOY"}]],"songType":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",23],"value":"cover"}]],"performances":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",22],"value":2}]]}}
-{"@class":"java.util.HashMap","id":9,"label":"song","inE":{"@class":"java.util.HashMap","followedBy":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":3776,"outV":3,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":65,"outV":46,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":1923,"outV":103,"properties":{"@class":"java.util.HashMap","weight":3}},{"@class":"java.util.HashMap","id":5956,"outV":50,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":3077,"outV":153,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.HashMap","id":5832,"outV":76,"properties":{"@class":"java.util.HashMap","weight":1}},{"@class":"java.util.HashMap","id":1161,"outV":26,"properties":{"@class":"java.util.HashMap","weight":8}},{"@class":"java.util.HashMap","id":6667,"outV":12,"properties":{"@class":"java.util.HashMap","weight":2}},{"@class":"java.util.Hash
 Map","id":2699,"outV":13,"properties":{"@class":"java.util.Ha

<TRUNCATED>

[11/19] tinkerpop git commit: TINKERPOP-1274: GraphSON 2.0.

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/data/tinkerpop-classic-v2d0-typed.json
----------------------------------------------------------------------
diff --git a/data/tinkerpop-classic-v2d0-typed.json b/data/tinkerpop-classic-v2d0-typed.json
new file mode 100644
index 0000000..56956ea
--- /dev/null
+++ b/data/tinkerpop-classic-v2d0-typed.json
@@ -0,0 +1,6 @@
+{"id":{"@type":"gremlin:int32","@value":1},"label":"vertex","outE":{"created":[{"id":{"@type":"gremlin:int32","@value":9},"inV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:float","@value":0.4}}}],"knows":[{"id":{"@type":"gremlin:int32","@value":7},"inV":{"@type":"gremlin:int32","@value":2},"properties":{"weight":{"@type":"gremlin:float","@value":0.5}}},{"id":{"@type":"gremlin:int32","@value":8},"inV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:float","@value":1.0}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int32","@value":0},"value":"marko"}],"age":[{"id":{"@type":"gremlin:int32","@value":2},"value":{"@type":"gremlin:int32","@value":29}}]}}
+{"id":{"@type":"gremlin:int32","@value":2},"label":"vertex","inE":{"knows":[{"id":{"@type":"gremlin:int32","@value":7},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:float","@value":0.5}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int32","@value":3},"value":"vadas"}],"age":[{"id":{"@type":"gremlin:int32","@value":4},"value":{"@type":"gremlin:int32","@value":27}}]}}
+{"id":{"@type":"gremlin:int32","@value":3},"label":"vertex","inE":{"created":[{"id":{"@type":"gremlin:int32","@value":9},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:float","@value":0.4}}},{"id":{"@type":"gremlin:int32","@value":11},"outV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:float","@value":0.4}}},{"id":{"@type":"gremlin:int32","@value":12},"outV":{"@type":"gremlin:int32","@value":6},"properties":{"weight":{"@type":"gremlin:float","@value":0.2}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int32","@value":5},"value":"lop"}],"lang":[{"id":{"@type":"gremlin:int32","@value":6},"value":"java"}]}}
+{"id":{"@type":"gremlin:int32","@value":4},"label":"vertex","inE":{"knows":[{"id":{"@type":"gremlin:int32","@value":8},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:float","@value":1.0}}}]},"outE":{"created":[{"id":{"@type":"gremlin:int32","@value":10},"inV":{"@type":"gremlin:int32","@value":5},"properties":{"weight":{"@type":"gremlin:float","@value":1.0}}},{"id":{"@type":"gremlin:int32","@value":11},"inV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:float","@value":0.4}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int32","@value":7},"value":"josh"}],"age":[{"id":{"@type":"gremlin:int32","@value":8},"value":{"@type":"gremlin:int32","@value":32}}]}}
+{"id":{"@type":"gremlin:int32","@value":5},"label":"vertex","inE":{"created":[{"id":{"@type":"gremlin:int32","@value":10},"outV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:float","@value":1.0}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int32","@value":9},"value":"ripple"}],"lang":[{"id":{"@type":"gremlin:int32","@value":10},"value":"java"}]}}
+{"id":{"@type":"gremlin:int32","@value":6},"label":"vertex","outE":{"created":[{"id":{"@type":"gremlin:int32","@value":12},"inV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:float","@value":0.2}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int32","@value":11},"value":"peter"}],"age":[{"id":{"@type":"gremlin:int32","@value":12},"value":{"@type":"gremlin:int32","@value":35}}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/data/tinkerpop-classic-v2d0.json
----------------------------------------------------------------------
diff --git a/data/tinkerpop-classic-v2d0.json b/data/tinkerpop-classic-v2d0.json
new file mode 100644
index 0000000..5ccfe05
--- /dev/null
+++ b/data/tinkerpop-classic-v2d0.json
@@ -0,0 +1,6 @@
+{"id":1,"label":"vertex","outE":{"created":[{"id":9,"inV":3,"properties":{"weight":0.4}}],"knows":[{"id":7,"inV":2,"properties":{"weight":0.5}},{"id":8,"inV":4,"properties":{"weight":1.0}}]},"properties":{"name":[{"id":0,"value":"marko"}],"age":[{"id":2,"value":29}]}}
+{"id":2,"label":"vertex","inE":{"knows":[{"id":7,"outV":1,"properties":{"weight":0.5}}]},"properties":{"name":[{"id":3,"value":"vadas"}],"age":[{"id":4,"value":27}]}}
+{"id":3,"label":"vertex","inE":{"created":[{"id":9,"outV":1,"properties":{"weight":0.4}},{"id":11,"outV":4,"properties":{"weight":0.4}},{"id":12,"outV":6,"properties":{"weight":0.2}}]},"properties":{"name":[{"id":5,"value":"lop"}],"lang":[{"id":6,"value":"java"}]}}
+{"id":4,"label":"vertex","inE":{"knows":[{"id":8,"outV":1,"properties":{"weight":1.0}}]},"outE":{"created":[{"id":10,"inV":5,"properties":{"weight":1.0}},{"id":11,"inV":3,"properties":{"weight":0.4}}]},"properties":{"name":[{"id":7,"value":"josh"}],"age":[{"id":8,"value":32}]}}
+{"id":5,"label":"vertex","inE":{"created":[{"id":10,"outV":4,"properties":{"weight":1.0}}]},"properties":{"name":[{"id":9,"value":"ripple"}],"lang":[{"id":10,"value":"java"}]}}
+{"id":6,"label":"vertex","outE":{"created":[{"id":12,"inV":3,"properties":{"weight":0.2}}]},"properties":{"name":[{"id":11,"value":"peter"}],"age":[{"id":12,"value":35}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/data/tinkerpop-crew-v2d0-typed.json
----------------------------------------------------------------------
diff --git a/data/tinkerpop-crew-v2d0-typed.json b/data/tinkerpop-crew-v2d0-typed.json
new file mode 100644
index 0000000..e688520
--- /dev/null
+++ b/data/tinkerpop-crew-v2d0-typed.json
@@ -0,0 +1,6 @@
+{"id":{"@type":"gremlin:int32","@value":1},"label":"person","outE":{"uses":[{"id":{"@type":"gremlin:int32","@value":16},"inV":{"@type":"gremlin:int32","@value":11},"properties":{"skill":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":15},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"skill":{"@type":"gremlin:int32","@value":4}}}],"develops":[{"id":{"@type":"gremlin:int32","@value":13},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"since":{"@type":"gremlin:int32","@value":2009}}},{"id":{"@type":"gremlin:int32","@value":14},"inV":{"@type":"gremlin:int32","@value":11},"properties":{"since":{"@type":"gremlin:int32","@value":2010}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":0},"value":"marko"}],"location":[{"id":{"@type":"gremlin:int64","@value":6},"value":"san diego","properties":{"startTime":{"@type":"gremlin:int32","@value":1997},"endTime":{"@type":"gremlin:int32","@value":2001}}},{"id":{"@type":"gremlin:int6
 4","@value":7},"value":"santa cruz","properties":{"startTime":{"@type":"gremlin:int32","@value":2001},"endTime":{"@type":"gremlin:int32","@value":2004}}},{"id":{"@type":"gremlin:int64","@value":8},"value":"brussels","properties":{"startTime":{"@type":"gremlin:int32","@value":2004},"endTime":{"@type":"gremlin:int32","@value":2005}}},{"id":{"@type":"gremlin:int64","@value":9},"value":"santa fe","properties":{"startTime":{"@type":"gremlin:int32","@value":2005}}}]}}
+{"id":{"@type":"gremlin:int32","@value":7},"label":"person","outE":{"uses":[{"id":{"@type":"gremlin:int32","@value":19},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"skill":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":20},"inV":{"@type":"gremlin:int32","@value":11},"properties":{"skill":{"@type":"gremlin:int32","@value":4}}}],"develops":[{"id":{"@type":"gremlin:int32","@value":17},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"since":{"@type":"gremlin:int32","@value":2010}}},{"id":{"@type":"gremlin:int32","@value":18},"inV":{"@type":"gremlin:int32","@value":11},"properties":{"since":{"@type":"gremlin:int32","@value":2011}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":1},"value":"stephen"}],"location":[{"id":{"@type":"gremlin:int64","@value":10},"value":"centreville","properties":{"startTime":{"@type":"gremlin:int32","@value":1990},"endTime":{"@type":"gremlin:int32","@value":2000}}},{"id":{"@type":"gremlin
 :int64","@value":11},"value":"dulles","properties":{"startTime":{"@type":"gremlin:int32","@value":2000},"endTime":{"@type":"gremlin:int32","@value":2006}}},{"id":{"@type":"gremlin:int64","@value":12},"value":"purcellville","properties":{"startTime":{"@type":"gremlin:int32","@value":2006}}}]}}
+{"id":{"@type":"gremlin:int32","@value":8},"label":"person","outE":{"uses":[{"id":{"@type":"gremlin:int32","@value":22},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"skill":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":23},"inV":{"@type":"gremlin:int32","@value":11},"properties":{"skill":{"@type":"gremlin:int32","@value":3}}}],"develops":[{"id":{"@type":"gremlin:int32","@value":21},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"since":{"@type":"gremlin:int32","@value":2012}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":2},"value":"matthias"}],"location":[{"id":{"@type":"gremlin:int64","@value":13},"value":"bremen","properties":{"startTime":{"@type":"gremlin:int32","@value":2004},"endTime":{"@type":"gremlin:int32","@value":2007}}},{"id":{"@type":"gremlin:int64","@value":14},"value":"baltimore","properties":{"startTime":{"@type":"gremlin:int32","@value":2007},"endTime":{"@type":"gremlin:int32","@value":2011}
 }},{"id":{"@type":"gremlin:int64","@value":15},"value":"oakland","properties":{"startTime":{"@type":"gremlin:int32","@value":2011},"endTime":{"@type":"gremlin:int32","@value":2014}}},{"id":{"@type":"gremlin:int64","@value":16},"value":"seattle","properties":{"startTime":{"@type":"gremlin:int32","@value":2014}}}]}}
+{"id":{"@type":"gremlin:int32","@value":9},"label":"person","outE":{"uses":[{"id":{"@type":"gremlin:int32","@value":24},"inV":{"@type":"gremlin:int32","@value":10},"properties":{"skill":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":25},"inV":{"@type":"gremlin:int32","@value":11},"properties":{"skill":{"@type":"gremlin:int32","@value":3}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":3},"value":"daniel"}],"location":[{"id":{"@type":"gremlin:int64","@value":17},"value":"spremberg","properties":{"startTime":{"@type":"gremlin:int32","@value":1982},"endTime":{"@type":"gremlin:int32","@value":2005}}},{"id":{"@type":"gremlin:int64","@value":18},"value":"kaiserslautern","properties":{"startTime":{"@type":"gremlin:int32","@value":2005},"endTime":{"@type":"gremlin:int32","@value":2009}}},{"id":{"@type":"gremlin:int64","@value":19},"value":"aachen","properties":{"startTime":{"@type":"gremlin:int32","@value":2009}}}]}}
+{"id":{"@type":"gremlin:int32","@value":10},"label":"software","inE":{"uses":[{"id":{"@type":"gremlin:int32","@value":19},"outV":{"@type":"gremlin:int32","@value":7},"properties":{"skill":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":22},"outV":{"@type":"gremlin:int32","@value":8},"properties":{"skill":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":24},"outV":{"@type":"gremlin:int32","@value":9},"properties":{"skill":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":15},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"skill":{"@type":"gremlin:int32","@value":4}}}],"develops":[{"id":{"@type":"gremlin:int32","@value":17},"outV":{"@type":"gremlin:int32","@value":7},"properties":{"since":{"@type":"gremlin:int32","@value":2010}}},{"id":{"@type":"gremlin:int32","@value":21},"outV":{"@type":"gremlin:int32","@value":8},"properties":{"since":{"@type":"gremlin:int32","@value":2012}}},{"id":
 {"@type":"gremlin:int32","@value":13},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"since":{"@type":"gremlin:int32","@value":2009}}}]},"outE":{"traverses":[{"id":{"@type":"gremlin:int32","@value":26},"inV":{"@type":"gremlin:int32","@value":11}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":4},"value":"gremlin"}]}}
+{"id":{"@type":"gremlin:int32","@value":11},"label":"software","inE":{"traverses":[{"id":{"@type":"gremlin:int32","@value":26},"outV":{"@type":"gremlin:int32","@value":10}}],"uses":[{"id":{"@type":"gremlin:int32","@value":16},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"skill":{"@type":"gremlin:int32","@value":5}}},{"id":{"@type":"gremlin:int32","@value":20},"outV":{"@type":"gremlin:int32","@value":7},"properties":{"skill":{"@type":"gremlin:int32","@value":4}}},{"id":{"@type":"gremlin:int32","@value":23},"outV":{"@type":"gremlin:int32","@value":8},"properties":{"skill":{"@type":"gremlin:int32","@value":3}}},{"id":{"@type":"gremlin:int32","@value":25},"outV":{"@type":"gremlin:int32","@value":9},"properties":{"skill":{"@type":"gremlin:int32","@value":3}}}],"develops":[{"id":{"@type":"gremlin:int32","@value":18},"outV":{"@type":"gremlin:int32","@value":7},"properties":{"since":{"@type":"gremlin:int32","@value":2011}}},{"id":{"@type":"gremlin:int32","@value":14},"outV":{"@
 type":"gremlin:int32","@value":1},"properties":{"since":{"@type":"gremlin:int32","@value":2010}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":5},"value":"tinkergraph"}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/data/tinkerpop-crew-v2d0.json
----------------------------------------------------------------------
diff --git a/data/tinkerpop-crew-v2d0.json b/data/tinkerpop-crew-v2d0.json
new file mode 100644
index 0000000..2165e4d
--- /dev/null
+++ b/data/tinkerpop-crew-v2d0.json
@@ -0,0 +1,6 @@
+{"id":1,"label":"person","outE":{"uses":[{"id":16,"inV":11,"properties":{"skill":5}},{"id":15,"inV":10,"properties":{"skill":4}}],"develops":[{"id":13,"inV":10,"properties":{"since":2009}},{"id":14,"inV":11,"properties":{"since":2010}}]},"properties":{"name":[{"id":0,"value":"marko"}],"location":[{"id":6,"value":"san diego","properties":{"startTime":1997,"endTime":2001}},{"id":7,"value":"santa cruz","properties":{"startTime":2001,"endTime":2004}},{"id":8,"value":"brussels","properties":{"startTime":2004,"endTime":2005}},{"id":9,"value":"santa fe","properties":{"startTime":2005}}]}}
+{"id":7,"label":"person","outE":{"uses":[{"id":19,"inV":10,"properties":{"skill":5}},{"id":20,"inV":11,"properties":{"skill":4}}],"develops":[{"id":17,"inV":10,"properties":{"since":2010}},{"id":18,"inV":11,"properties":{"since":2011}}]},"properties":{"name":[{"id":1,"value":"stephen"}],"location":[{"id":10,"value":"centreville","properties":{"startTime":1990,"endTime":2000}},{"id":11,"value":"dulles","properties":{"startTime":2000,"endTime":2006}},{"id":12,"value":"purcellville","properties":{"startTime":2006}}]}}
+{"id":8,"label":"person","outE":{"uses":[{"id":22,"inV":10,"properties":{"skill":3}},{"id":23,"inV":11,"properties":{"skill":3}}],"develops":[{"id":21,"inV":10,"properties":{"since":2012}}]},"properties":{"name":[{"id":2,"value":"matthias"}],"location":[{"id":13,"value":"bremen","properties":{"startTime":2004,"endTime":2007}},{"id":14,"value":"baltimore","properties":{"startTime":2007,"endTime":2011}},{"id":15,"value":"oakland","properties":{"startTime":2011,"endTime":2014}},{"id":16,"value":"seattle","properties":{"startTime":2014}}]}}
+{"id":9,"label":"person","outE":{"uses":[{"id":24,"inV":10,"properties":{"skill":5}},{"id":25,"inV":11,"properties":{"skill":3}}]},"properties":{"name":[{"id":3,"value":"daniel"}],"location":[{"id":17,"value":"spremberg","properties":{"startTime":1982,"endTime":2005}},{"id":18,"value":"kaiserslautern","properties":{"startTime":2005,"endTime":2009}},{"id":19,"value":"aachen","properties":{"startTime":2009}}]}}
+{"id":10,"label":"software","inE":{"uses":[{"id":19,"outV":7,"properties":{"skill":5}},{"id":22,"outV":8,"properties":{"skill":3}},{"id":24,"outV":9,"properties":{"skill":5}},{"id":15,"outV":1,"properties":{"skill":4}}],"develops":[{"id":17,"outV":7,"properties":{"since":2010}},{"id":21,"outV":8,"properties":{"since":2012}},{"id":13,"outV":1,"properties":{"since":2009}}]},"outE":{"traverses":[{"id":26,"inV":11}]},"properties":{"name":[{"id":4,"value":"gremlin"}]}}
+{"id":11,"label":"software","inE":{"traverses":[{"id":26,"outV":10}],"uses":[{"id":16,"outV":1,"properties":{"skill":5}},{"id":20,"outV":7,"properties":{"skill":4}},{"id":23,"outV":8,"properties":{"skill":3}},{"id":25,"outV":9,"properties":{"skill":3}}],"develops":[{"id":18,"outV":7,"properties":{"since":2011}},{"id":14,"outV":1,"properties":{"since":2010}}]},"properties":{"name":[{"id":5,"value":"tinkergraph"}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/data/tinkerpop-modern-v2d0-typed.json
----------------------------------------------------------------------
diff --git a/data/tinkerpop-modern-v2d0-typed.json b/data/tinkerpop-modern-v2d0-typed.json
new file mode 100644
index 0000000..9a297c3
--- /dev/null
+++ b/data/tinkerpop-modern-v2d0-typed.json
@@ -0,0 +1,6 @@
+{"id":{"@type":"gremlin:int32","@value":1},"label":"person","outE":{"created":[{"id":{"@type":"gremlin:int32","@value":9},"inV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:double","@value":0.4}}}],"knows":[{"id":{"@type":"gremlin:int32","@value":7},"inV":{"@type":"gremlin:int32","@value":2},"properties":{"weight":{"@type":"gremlin:double","@value":0.5}}},{"id":{"@type":"gremlin:int32","@value":8},"inV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:double","@value":1.0}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":0},"value":"marko"}],"age":[{"id":{"@type":"gremlin:int64","@value":1},"value":{"@type":"gremlin:int32","@value":29}}]}}
+{"id":{"@type":"gremlin:int32","@value":2},"label":"person","inE":{"knows":[{"id":{"@type":"gremlin:int32","@value":7},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:double","@value":0.5}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":2},"value":"vadas"}],"age":[{"id":{"@type":"gremlin:int64","@value":3},"value":{"@type":"gremlin:int32","@value":27}}]}}
+{"id":{"@type":"gremlin:int32","@value":3},"label":"software","inE":{"created":[{"id":{"@type":"gremlin:int32","@value":9},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:double","@value":0.4}}},{"id":{"@type":"gremlin:int32","@value":11},"outV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:double","@value":0.4}}},{"id":{"@type":"gremlin:int32","@value":12},"outV":{"@type":"gremlin:int32","@value":6},"properties":{"weight":{"@type":"gremlin:double","@value":0.2}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":4},"value":"lop"}],"lang":[{"id":{"@type":"gremlin:int64","@value":5},"value":"java"}]}}
+{"id":{"@type":"gremlin:int32","@value":4},"label":"person","inE":{"knows":[{"id":{"@type":"gremlin:int32","@value":8},"outV":{"@type":"gremlin:int32","@value":1},"properties":{"weight":{"@type":"gremlin:double","@value":1.0}}}]},"outE":{"created":[{"id":{"@type":"gremlin:int32","@value":10},"inV":{"@type":"gremlin:int32","@value":5},"properties":{"weight":{"@type":"gremlin:double","@value":1.0}}},{"id":{"@type":"gremlin:int32","@value":11},"inV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:double","@value":0.4}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":6},"value":"josh"}],"age":[{"id":{"@type":"gremlin:int64","@value":7},"value":{"@type":"gremlin:int32","@value":32}}]}}
+{"id":{"@type":"gremlin:int32","@value":5},"label":"software","inE":{"created":[{"id":{"@type":"gremlin:int32","@value":10},"outV":{"@type":"gremlin:int32","@value":4},"properties":{"weight":{"@type":"gremlin:double","@value":1.0}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":8},"value":"ripple"}],"lang":[{"id":{"@type":"gremlin:int64","@value":9},"value":"java"}]}}
+{"id":{"@type":"gremlin:int32","@value":6},"label":"person","outE":{"created":[{"id":{"@type":"gremlin:int32","@value":12},"inV":{"@type":"gremlin:int32","@value":3},"properties":{"weight":{"@type":"gremlin:double","@value":0.2}}}]},"properties":{"name":[{"id":{"@type":"gremlin:int64","@value":10},"value":"peter"}],"age":[{"id":{"@type":"gremlin:int64","@value":11},"value":{"@type":"gremlin:int32","@value":35}}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/data/tinkerpop-modern-v2d0.json
----------------------------------------------------------------------
diff --git a/data/tinkerpop-modern-v2d0.json b/data/tinkerpop-modern-v2d0.json
new file mode 100644
index 0000000..18c265d
--- /dev/null
+++ b/data/tinkerpop-modern-v2d0.json
@@ -0,0 +1,6 @@
+{"id":1,"label":"person","outE":{"created":[{"id":9,"inV":3,"properties":{"weight":0.4}}],"knows":[{"id":7,"inV":2,"properties":{"weight":0.5}},{"id":8,"inV":4,"properties":{"weight":1.0}}]},"properties":{"name":[{"id":0,"value":"marko"}],"age":[{"id":1,"value":29}]}}
+{"id":2,"label":"person","inE":{"knows":[{"id":7,"outV":1,"properties":{"weight":0.5}}]},"properties":{"name":[{"id":2,"value":"vadas"}],"age":[{"id":3,"value":27}]}}
+{"id":3,"label":"software","inE":{"created":[{"id":9,"outV":1,"properties":{"weight":0.4}},{"id":11,"outV":4,"properties":{"weight":0.4}},{"id":12,"outV":6,"properties":{"weight":0.2}}]},"properties":{"name":[{"id":4,"value":"lop"}],"lang":[{"id":5,"value":"java"}]}}
+{"id":4,"label":"person","inE":{"knows":[{"id":8,"outV":1,"properties":{"weight":1.0}}]},"outE":{"created":[{"id":10,"inV":5,"properties":{"weight":1.0}},{"id":11,"inV":3,"properties":{"weight":0.4}}]},"properties":{"name":[{"id":6,"value":"josh"}],"age":[{"id":7,"value":32}]}}
+{"id":5,"label":"software","inE":{"created":[{"id":10,"outV":4,"properties":{"weight":1.0}}]},"properties":{"name":[{"id":8,"value":"ripple"}],"lang":[{"id":9,"value":"java"}]}}
+{"id":6,"label":"person","outE":{"created":[{"id":12,"inV":3,"properties":{"weight":0.2}}]},"properties":{"name":[{"id":10,"value":"peter"}],"age":[{"id":11,"value":35}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/docs/src/reference/the-graph.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/the-graph.asciidoc b/docs/src/reference/the-graph.asciidoc
index 8b4916a..151de3a 100644
--- a/docs/src/reference/the-graph.asciidoc
+++ b/docs/src/reference/the-graph.asciidoc
@@ -499,7 +499,7 @@ graph.io(graphson()).writer().create().writeVertex(f, g.V(1).next(), BOTH)
 f.close()
 ----
 
-The following GraphSON example shows the output of `GraphSonWriter.writeVertex()` with associated edges:
+The following GraphSON example shows the output of `GraphSONWriter.writeVertex()` with associated edges:
 
 [source,json]
 ----
@@ -553,7 +553,18 @@ The following GraphSON example shows the output of `GraphSonWriter.writeVertex()
 The vertex properly serializes to valid JSON but note that a consuming application will not automatically know how to
 interpret the numeric values.  In coercing those Java values to JSON, such information is lost.
 
-With a minor change to the construction of the `GraphSONWriter` the lossy nature of GraphSON can be avoided:
+[[graphson-types-embedding]]
+Types embedding
+^^^^^^^^^^^^^^^
+
+With a minor change to the construction of the `GraphSONWriter` the lossy nature of GraphSON can be avoided.
+
+[[graphson-1.0-types]]
+Types with GraphSON 1.0.
+++++++++++++++++++++++++
+
+GraphSON 1.0 is the version enabled by default when creating a GraphSON Mapper. Here is how to enable types with GraphSON
+1.0:
 
 [gremlin-groovy]
 ----
@@ -652,6 +663,128 @@ from JSON typing.  While the output is more verbose, it comes with the security
 non-JVM languages won't be able to consume this information automatically, at least there is a hint as to how the
 values should be coerced back into the correct types in the target language.
 
+[[graphson-2.0-types]]
+GraphSON 2.0.
++++++++++++++
+
+GraphSON 2.0 has been introduced to improve the format of the typed values from GraphSON 1.0. It provides non-Java
+centric types information in a consistent format.
+
+With GraphSON 2.0, types are enabled by default.
+
+The type format is :
+
+* Non typed value : `value`
+* Typed value     : `{"@type":"typeID", "@value":value}`
+
+TypeIDs are composed of 2 parts, a namespace, and a type name, in the format `"namespace:typename"`.
+A namespace gives the possibility for TinkerPop implementors to categorize custom types they may implement
+and avoid collision with existing TinkerPop types. By default, TinkerPop types will have the
+namespace `g`.
+
+GraphSON 2.0 will provide type information for any value that is not String, Boolean, Map or Collection.
+This includes types for Graph objects as well. The current Graph object types provided by
+TinkerPop, and their respective typeIDs are :
+
+* Vertex -> "gremlin:vertex"
+* Edge -> "gremlin:edge"
+* VertexPropery -> "gremlin:vertexproperty"
+* Property -> "gremlin:property"
+* Path -> "gremlin:path"
+* Tree -> "gremlin:tree"
+* Graph -> "gremlin:graph"
+* Metrics -> "gremlin:metrics"
+* TraversalMetrics -> `gremlin:traversalmetrics"
+
+Here's the same previous example of GraphSON 1.0, but with GraphSON 2.0:
+
+[gremlin-groovy]
+----
+graph = TinkerFactory.createModern()
+g = graph.traversal()
+f = new FileOutputStream("vertex-graphson20.json")
+mapper = graph.io(graphson()).mapper().version(GraphSONVersion.V2_0).create()
+v = g.V(1).next()
+v.property("uuid", UUID.randomUUID())
+graph.io(graphson()).writer().mapper(mapper).create().writeObject(f, v)
+f.close()
+----
+
+Creating a GraphSON 2.0 mapper is done by calling `.version(GraphSONVersion.V2_0)` on the mapper builder.
+Here's a sample output:
+
+[source,json]
+----
+{
+    "@type":"gremlin:vertex",
+    "@value":{
+        "id":{
+            "@type":"gremlin:int32",
+            "@value":1
+        },
+        "label":"person",
+        "properties":{
+            "name":[
+                {
+                    "@type":"gremlin:vertexproperty",
+                    "@value":{
+                        "id":{
+                            "@type":"gremlin:int64",
+                            "@value":0
+                        },
+                        "value":"marko",
+                        "label":"name"
+                    }
+                }
+            ],
+            "myUUIDprop":[
+                {
+                    "@type":"gremlin:vertexproperty",
+                    "@value":{
+                        "id":{
+                            "@type":"gremlin:int64",
+                            "@value":12
+                        },
+                        "value":{
+                            "@type":"gremlin:uuid",
+                            "@value":"02c1041b-c7ef-46ce-812e-3d7963ad50b3"
+                        },
+                        "label":"myUUIDprop"
+                    }
+                }
+            ],
+            "age":[
+                {
+                    "@type":"gremlin:vertexproperty",
+                    "@value":{
+                        "id":{
+                            "@type":"gremlin:int64",
+                            "@value":1
+                        },
+                        "value":{
+                            "@type":"gremlin:int32",
+                            "@value":29
+                        },
+                        "label":"age"
+                    }
+                }
+            ]
+        }
+    }
+}
+----
+
+Here's how to disable types when creating a GraphSON 2.0 `Mapper`:
+
+[gremlin-groovy]
+----
+mapper = graph.io(graphson()).mapper().version(GraphSONVersion.V2_0).typeInfo(GraphSONMapper.TypeInfo.NO_TYPES).create()
+----
+
+By disabling types, the JSON payload produced will be the same than GraphSON 2.0, without the
+extra information that is written for types. Please note, disabling types can be unsafe with
+regards to the written data.
+
 [[gryo-reader-writer]]
 Gryo Reader/Writer
 ~~~~~~~~~~~~~~~~~~
@@ -772,4 +905,4 @@ IMPORTANT: TinkerPop uses `tinkerpop.` and `gremlin.` as the prefixes for provid
 reduce implementations, and plugins.
 
 The only truly protected namespace is the _hidden namespace_ provided to graph systems. From there, it's up to
-engineers to respect the namespacing conventions presented.
+engineers to respect the namespacing conventions presented.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/docs/src/upgrade/release-3.2.x-incubating.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade/release-3.2.x-incubating.asciidoc b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
index bdcf69e..bf29feb 100644
--- a/docs/src/upgrade/release-3.2.x-incubating.asciidoc
+++ b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
@@ -93,6 +93,13 @@ Please see the link:https://github.com/apache/tinkerpop/blob/3.2.1/CHANGELOG.asc
 Upgrading for Users
 ~~~~~~~~~~~~~~~~~~~
 
+GraphSON 2.0
+^^^^^^^^^^^^
+
+GraphSON 2.0 has been introduced to improve and normalize the format of types embedding in GraphSON. Please see
+link:http://tinkerpop.apache.org/docs/3.2.1-incubating/reference/#graphson-2.0-types[Reference Documentation -
+GraphSON 2.0] and link:https://issues.apache.org/jira/browse/TINKERPOP-1274[TINKERPOP-1274].
+
 Gephi Plugin
 ^^^^^^^^^^^^
 
@@ -268,6 +275,19 @@ VertexTest Signatures
 The method signatures of `get_g_VXlistXv1_v2_v3XX_name` and `get_g_VXlistX1_2_3XX_name` of `VertexTest` were changed
 to take arguments for the `Traversal` to be constructed by extending classes.
 
+Graph Drivers Providers
+^^^^^^^^^^^^^^^^^^^^^^
+
+GraphSON 2.0
+++++++++++++
+
+Drivers providers can exploit the new format of typed values JSON serialization offered by GraphSON 2.0. This format
+has been created to allow easy and agnostic parsing of a GraphSON payload without type loss. Drivers of non Java
+languages can then implement their own mapping of the GraphSON's language agnostic type IDs like `UUID`, `LocalDate` to
+the appropriate representation for the driver's language. A more detailed description of GraphSON 2.0 can be found
+there : link:http://tinkerpop.apache.org/docs/3.2.1-incubating/reference/#graphson-2.0-types[Reference Documentation
+- GraphSON 2.0]
+
 TinkerPop 3.2.0
 ---------------
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
index 1714a9e..058386b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
@@ -54,6 +54,14 @@ public final class DefaultTraversalMetrics implements TraversalMetrics, Serializ
     public DefaultTraversalMetrics() {
     }
 
+    // This is only a convenient constructor needed for GraphSON deserialization.
+    // TODO: see if that's ok to add that.
+    public DefaultTraversalMetrics(long totalStepDurationNs, List<MutableMetrics> metricsMap) {
+        this.totalStepDuration = totalStepDurationNs;
+        this.computedMetrics = new LinkedHashMap<>(metrics.size());
+        metricsMap.forEach(m -> computedMetrics.put(m.getId(), m.getImmutableClone()));
+    }
+
     @Override
     public long getDuration(final TimeUnit unit) {
         return unit.convert(totalStepDuration, MutableMetrics.SOURCE_UNIT);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java
index a952c65..3b0c886 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java
@@ -42,6 +42,18 @@ public class MutableMetrics extends ImmutableMetrics implements Cloneable {
         this.name = name;
     }
 
+    // create a MutableMetrics from an Immutable one.
+    // needed that for tests, don't know if it is worth keeping it public.
+    // TODO: see if it's ok to add this
+    public MutableMetrics(Metrics other) {
+        this.id = other.getId();
+        this.name = other.getName();
+        this.annotations.putAll(other.getAnnotations());
+        this.durationNs = other.getDuration(TimeUnit.NANOSECONDS);
+        other.getCounts().forEach((key, count) -> this.counts.put(key, new AtomicLong(count)));
+        other.getNested().forEach(nested -> this.addNested(new MutableMetrics(nested)));
+    }
+
     public void addNested(MutableMetrics metrics) {
         this.nested.put(metrics.getId(), metrics);
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapper.java
index 73e9552..2a000a3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapper.java
@@ -29,10 +29,24 @@ import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeResolverBuilder
 import org.apache.tinkerpop.shaded.jackson.databind.jsontype.impl.StdTypeResolverBuilder;
 import org.apache.tinkerpop.shaded.jackson.databind.module.SimpleModule;
 import org.apache.tinkerpop.shaded.jackson.databind.ser.DefaultSerializerProvider;
+import org.apache.tinkerpop.shaded.jackson.databind.util.TokenBuffer;
 import org.javatuples.Pair;
 
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.sql.Timestamp;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.TimeZone;
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
 
 /**
  * An extension to the standard Jackson {@code ObjectMapper} which automatically registers the standard
@@ -60,14 +74,15 @@ public class GraphSONMapper implements Mapper<ObjectMapper> {
     private final boolean normalize;
     private final boolean embedTypes;
     private final GraphSONVersion version;
+    private final TypeInfo typeInfo;
 
-    private GraphSONMapper(final List<SimpleModule> customModules, final boolean loadCustomSerializers,
-                           final boolean normalize, final boolean embedTypes, final GraphSONVersion version) {
-        this.customModules = customModules;
-        this.loadCustomSerializers = loadCustomSerializers;
-        this.normalize = normalize;
-        this.embedTypes = embedTypes;
-        this.version = version;
+    private GraphSONMapper(final Builder builder) {
+        this.customModules = builder.customModules;
+        this.loadCustomSerializers = builder.loadCustomModules;
+        this.normalize = builder.normalize;
+        this.embedTypes = builder.embedTypes;
+        this.version = builder.version;
+        this.typeInfo = builder.typeInfo;
     }
 
     @Override
@@ -75,32 +90,75 @@ public class GraphSONMapper implements Mapper<ObjectMapper> {
         final ObjectMapper om = new ObjectMapper();
         om.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
 
-        if (embedTypes) {
-            final TypeResolverBuilder<?> typer = new StdTypeResolverBuilder()
-                    .init(JsonTypeInfo.Id.CLASS, null)
-                    .inclusion(JsonTypeInfo.As.PROPERTY)
-                    .typeProperty(GraphSONTokens.CLASS);
-            om.setDefaultTyping(typer);
-        }
-
-        if (normalize)
-            om.enable(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS);
-
-        // this provider toStrings all unknown classes and converts keys in Map objects that are Object to String.
-        final DefaultSerializerProvider provider = new GraphSONSerializerProvider();
-        provider.setDefaultKeySerializer(new GraphSONSerializers.GraphSONKeySerializer());
-        om.setSerializerProvider(provider);
-
-        om.registerModule(version.getBuilder().create(normalize));
+        GraphSONModule graphSONModule = version.getBuilder().create(normalize);
+        om.registerModule(graphSONModule);
         customModules.forEach(om::registerModule);
 
+
         // plugin external serialization modules
         if (loadCustomSerializers)
             om.findAndRegisterModules();
 
+
+        if (version == GraphSONVersion.V1_0) {
+            if (embedTypes) {
+                final TypeResolverBuilder<?> typer = new StdTypeResolverBuilder()
+                        .init(JsonTypeInfo.Id.CLASS, null)
+                        .inclusion(JsonTypeInfo.As.PROPERTY)
+                        .typeProperty(GraphSONTokens.CLASS);
+                om.setDefaultTyping(typer);
+            }
+        } else if (version == GraphSONVersion.V2_0) {
+            if (typeInfo != TypeInfo.NO_TYPES) {
+                GraphSONTypeIdResolver graphSONTypeIdResolver = new GraphSONTypeIdResolver();
+                final TypeResolverBuilder typer = new GraphSONTypeResolverBuilder()
+                        .typesEmbedding(getTypeInfo())
+                        .valuePropertyName(GraphSONTokens.VALUEPROP)
+                        .init(JsonTypeInfo.Id.CUSTOM, graphSONTypeIdResolver)
+                        .typeProperty(GraphSONTokens.VALUETYPE)
+                        ;
+
+                // Registers native Java types that are supported by Jackson
+                registerJavaBaseTypes(graphSONTypeIdResolver);
+
+                // Registers the GraphSON Module's types
+                graphSONModule.getTypeDefinitions()
+                        .forEach(
+                                (targetClass, typeId) -> graphSONTypeIdResolver.addCustomType(String.format("%s:%s", graphSONModule.getTypeNamespace(), typeId), targetClass)
+                        );
+
+
+                // Register types to typeResolver for the Custom modules
+                customModules.forEach(e -> {
+                    if (e instanceof TinkerPopJacksonModule) {
+                        TinkerPopJacksonModule mod = (TinkerPopJacksonModule) e;
+                        Map<Class, String> moduleTypeDefinitions = mod.getTypeDefinitions();
+                        if (moduleTypeDefinitions != null) {
+                            if (mod.getTypeNamespace() == null || mod.getTypeNamespace().isEmpty()) {
+                                throw new IllegalStateException("Cannot specify a module for GraphSON 2.0 with type definitions but without a type Domain. " +
+                                        "If no specific type domain is required, use Gremlin's default domain, \"gremlin\" but there may be collisions.");
+                            }
+                            moduleTypeDefinitions.forEach(
+                                    (targetClass, typeId) -> graphSONTypeIdResolver.addCustomType(String.format("%s:%s", mod.getTypeNamespace(), typeId), targetClass)
+                            );
+                        }
+                    }
+                });
+                om.setDefaultTyping(typer);
+            }
+        } else {
+            throw new IllegalStateException("Unknown GraphSONVersion : " + version);
+        }
+
+        // this provider toStrings all unknown classes and converts keys in Map objects that are Object to String.
+        final DefaultSerializerProvider provider = new GraphSONSerializerProvider(version);
+        om.setSerializerProvider(provider);
+
+        if (normalize)
+            om.enable(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS);
+
         // keep streams open to accept multiple values (e.g. multiple vertices)
         om.getFactory().disable(JsonGenerator.Feature.AUTO_CLOSE_TARGET);
-
         return om;
     }
 
@@ -112,6 +170,31 @@ public class GraphSONMapper implements Mapper<ObjectMapper> {
         return new Builder();
     }
 
+    public TypeInfo getTypeInfo() {
+        return this.typeInfo;
+    }
+
+
+    private void registerJavaBaseTypes(GraphSONTypeIdResolver graphSONTypeIdResolver) {
+        Arrays.asList(
+                BigInteger.class,
+                BigDecimal.class,
+                Byte.class,
+                Character.class,
+                UUID.class,
+                InetAddress.class,
+                InetSocketAddress.class,
+                Class.class,
+                Calendar.class,
+                Date.class,
+                TimeZone.class,
+                Timestamp.class,
+                AtomicBoolean.class,
+                AtomicReference.class,
+                TokenBuffer.class
+        ).forEach(e -> graphSONTypeIdResolver.addCustomType(String.format("%s:%s", GraphSONTokens.GREMLIN_TYPE_NAMESPACE, e.getSimpleName().toLowerCase()), e));
+    }
+
     public static class Builder implements Mapper.Builder<Builder> {
         private List<SimpleModule> customModules = new ArrayList<>();
         private boolean loadCustomModules = false;
@@ -119,6 +202,8 @@ public class GraphSONMapper implements Mapper<ObjectMapper> {
         private boolean embedTypes = false;
         private List<IoRegistry> registries = new ArrayList<>();
         private GraphSONVersion version = GraphSONVersion.V1_0;
+        // GraphSON 2.0 should have types activated by default, otherwise use there's no point in using it instead of 1.0.
+        private TypeInfo typeInfo = TypeInfo.PARTIAL_TYPES;
 
         private Builder() {
         }
@@ -133,7 +218,7 @@ public class GraphSONMapper implements Mapper<ObjectMapper> {
         }
 
         /**
-         * Set the version of GraphSON to use.
+         * Set the version of GraphSON to use. The default is {@link GraphSONVersion#V1_0}.
          */
         public Builder version(final GraphSONVersion version) {
             this.version = version;
@@ -174,10 +259,35 @@ public class GraphSONMapper implements Mapper<ObjectMapper> {
         }
 
         /**
-         * Embeds Java types into generated JSON to clarify their origins.
+         * Embeds Java types into generated JSON to clarify their origins. Setting this value will override the value
+         * of {@link #typeInfo(TypeInfo)} where true will set it to {@link TypeInfo#PARTIAL_TYPES} and false will set
+         * it to {@link TypeInfo#NO_TYPES}.
+         *
+         * @deprecated As of release 3.2.1, replaced by {@link #typeInfo(TypeInfo)}.
          */
+        @Deprecated
         public Builder embedTypes(final boolean embedTypes) {
             this.embedTypes = embedTypes;
+            this.typeInfo = embedTypes ? TypeInfo.PARTIAL_TYPES : TypeInfo.NO_TYPES;
+            return this;
+        }
+
+        /**
+         * Specify if the values are going to be typed or not, and at which level. Setting this value will override
+         * the value of {@link #embedTypes(boolean)} where {@link TypeInfo#PARTIAL_TYPES} will set it to true and
+         * {@link TypeInfo#NO_TYPES} will set it to false.
+         *
+         * The level can be NO_TYPES or PARTIAL_TYPES, and could be extended in the future.
+         */
+        public Builder typeInfo(final TypeInfo typeInfo) {
+            this.typeInfo = typeInfo;
+            if (typeInfo.equals(TypeInfo.PARTIAL_TYPES))
+                this.embedTypes = true;
+            else if (typeInfo.equals(TypeInfo.NO_TYPES))
+                this.embedTypes = false;
+            else
+                throw new IllegalArgumentException("This value can only be set to PARTIAL_TYPES and NO_TYPES");
+
             return this;
         }
 
@@ -187,7 +297,8 @@ public class GraphSONMapper implements Mapper<ObjectMapper> {
                 simpleModules.stream().map(Pair::getValue1).forEach(this.customModules::add);
             });
 
-            return new GraphSONMapper(customModules, loadCustomModules, normalize, embedTypes, version);
+            return new GraphSONMapper(this);
         }
+
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java
index 7cc6c91..a0303cf 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java
@@ -19,15 +19,19 @@
 package org.apache.tinkerpop.gremlin.structure.io.graphson;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
+import org.apache.tinkerpop.gremlin.process.traversal.util.Metrics;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalExplanation;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.apache.tinkerpop.gremlin.structure.util.star.StarGraphGraphSONSerializer;
-import org.apache.tinkerpop.shaded.jackson.databind.module.SimpleModule;
+import org.apache.tinkerpop.gremlin.structure.util.star.DirectionalStarGraph;
+import org.apache.tinkerpop.gremlin.structure.util.star.StarGraphGraphSONSerializerV1d0;
+import org.apache.tinkerpop.gremlin.structure.util.star.StarGraphGraphSONSerializerV2d0;
 
+import java.nio.ByteBuffer;
 import java.time.Duration;
 import java.time.Instant;
 import java.time.LocalDate;
@@ -41,8 +45,8 @@ import java.time.Year;
 import java.time.YearMonth;
 import java.time.ZoneOffset;
 import java.time.ZonedDateTime;
+import java.util.LinkedHashMap;
 import java.util.Map;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
 
 /**
  * The set of serializers that handle the core graph interfaces.  These serializers support normalization which
@@ -54,13 +58,147 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-abstract class GraphSONModule extends SimpleModule {
+abstract class GraphSONModule extends TinkerPopJacksonModule {
 
     GraphSONModule(final String name) {
         super(name);
     }
 
     /**
+     * Version 2.0 of GraphSON.
+     */
+    static final class GraphSONModuleV2d0 extends GraphSONModule {
+        /**
+         * Constructs a new object.
+         */
+        protected GraphSONModuleV2d0(final boolean normalize) {
+            super("graphson-2.0");
+
+            /////////////////////// SERIALIZERS ////////////////////////////
+
+            // graph
+            addSerializer(Edge.class, new GraphSONSerializersV2d0.EdgeJacksonSerializer(normalize));
+            addSerializer(Vertex.class, new GraphSONSerializersV2d0.VertexJacksonSerializer(normalize));
+            addSerializer(VertexProperty.class, new GraphSONSerializersV2d0.VertexPropertyJacksonSerializer(normalize, true));
+            addSerializer(Property.class, new GraphSONSerializersV2d0.PropertyJacksonSerializer());
+            addSerializer(Metrics.class, new GraphSONSerializersV2d0.MetricsJacksonSerializer());
+            addSerializer(TraversalMetrics.class, new GraphSONSerializersV2d0.TraversalMetricsJacksonSerializer());
+            addSerializer(TraversalExplanation.class, new GraphSONSerializersV2d0.TraversalExplanationJacksonSerializer());
+            addSerializer(Path.class, new GraphSONSerializersV2d0.PathJacksonSerializer());
+            addSerializer(DirectionalStarGraph.class, new StarGraphGraphSONSerializerV2d0(normalize));
+            addSerializer(Tree.class, new GraphSONSerializersV2d0.TreeJacksonSerializer());
+
+            // java.util
+            addSerializer(Map.Entry.class, new JavaUtilSerializersV2d0.MapEntryJacksonSerializer());
+
+            // need to explicitly add serializers for those types because Jackson doesn't do it at all.
+            addSerializer(Integer.class, new GraphSONSerializersV2d0.IntegerGraphSONSerializer());
+            addSerializer(Double.class, new GraphSONSerializersV2d0.DoubleGraphSONSerializer());
+
+            // java.time
+            addSerializer(Duration.class, new JavaTimeSerializersV2d0.DurationJacksonSerializer());
+            addSerializer(Instant.class, new JavaTimeSerializersV2d0.InstantJacksonSerializer());
+            addSerializer(LocalDate.class, new JavaTimeSerializersV2d0.LocalDateJacksonSerializer());
+            addSerializer(LocalDateTime.class, new JavaTimeSerializersV2d0.LocalDateTimeJacksonSerializer());
+            addSerializer(LocalTime.class, new JavaTimeSerializersV2d0.LocalTimeJacksonSerializer());
+            addSerializer(MonthDay.class, new JavaTimeSerializersV2d0.MonthDayJacksonSerializer());
+            addSerializer(OffsetDateTime.class, new JavaTimeSerializersV2d0.OffsetDateTimeJacksonSerializer());
+            addSerializer(OffsetTime.class, new JavaTimeSerializersV2d0.OffsetTimeJacksonSerializer());
+            addSerializer(Period.class, new JavaTimeSerializersV2d0.PeriodJacksonSerializer());
+            addSerializer(Year.class, new JavaTimeSerializersV2d0.YearJacksonSerializer());
+            addSerializer(YearMonth.class, new JavaTimeSerializersV2d0.YearMonthJacksonSerializer());
+            addSerializer(ZonedDateTime.class, new JavaTimeSerializersV2d0.ZonedDateTimeJacksonSerializer());
+            addSerializer(ZoneOffset.class, new JavaTimeSerializersV2d0.ZoneOffsetJacksonSerializer());
+
+            /////////////////////// DESERIALIZERS ////////////////////////////
+
+            // Tinkerpop Graph
+            addDeserializer(Vertex.class, new GraphSONSerializersV2d0.VertexJacksonDeserializer());
+            addDeserializer(Edge.class, new GraphSONSerializersV2d0.EdgeJacksonDeserializer());
+            addDeserializer(Property.class, new GraphSONSerializersV2d0.PropertyJacksonDeserializer());
+            addDeserializer(Path.class, new GraphSONSerializersV2d0.PathJacksonDeserializer());
+            addDeserializer(VertexProperty.class, new GraphSONSerializersV2d0.VertexPropertyJacksonDeserializer());
+            addDeserializer(Metrics.class, new GraphSONSerializersV2d0.MetricsJacksonDeserializer());
+            addDeserializer(TraversalMetrics.class, new GraphSONSerializersV2d0.TraversalMetricsJacksonDeserializer());
+            addDeserializer(Tree.class, new GraphSONSerializersV2d0.TreeJacksonDeserializer());
+
+            // java.time
+            addDeserializer(Duration.class, new JavaTimeSerializersV2d0.DurationJacksonDeserializer());
+            addDeserializer(Instant.class, new JavaTimeSerializersV2d0.InstantJacksonDeserializer());
+            addDeserializer(LocalDate.class, new JavaTimeSerializersV2d0.LocalDateJacksonDeserializer());
+            addDeserializer(LocalDateTime.class, new JavaTimeSerializersV2d0.LocalDateTimeJacksonDeserializer());
+            addDeserializer(LocalTime.class, new JavaTimeSerializersV2d0.LocalTimeJacksonDeserializer());
+            addDeserializer(MonthDay.class, new JavaTimeSerializersV2d0.MonthDayJacksonDeserializer());
+            addDeserializer(OffsetDateTime.class, new JavaTimeSerializersV2d0.OffsetDateTimeJacksonDeserializer());
+            addDeserializer(OffsetTime.class, new JavaTimeSerializersV2d0.OffsetTimeJacksonDeserializer());
+            addDeserializer(Period.class, new JavaTimeSerializersV2d0.PeriodJacksonDeserializer());
+            addDeserializer(Year.class, new JavaTimeSerializersV2d0.YearJacksonDeserializer());
+            addDeserializer(YearMonth.class, new JavaTimeSerializersV2d0.YearMonthJacksonDeserializer());
+            addDeserializer(ZonedDateTime.class, new JavaTimeSerializersV2d0.ZonedDateTimeJacksonDeserializer());
+            addDeserializer(ZoneOffset.class, new JavaTimeSerializersV2d0.ZoneOffsetJacksonDeserializer());
+        }
+
+        public static Builder build() {
+            return new Builder();
+        }
+
+        @Override
+        public Map<Class, String> getTypeDefinitions() {
+            return new LinkedHashMap<Class, String>(){{
+                // Those don't have deserializers because handled by Jackson,
+                // but we still want to rename them in GraphSON
+                put(ByteBuffer.class, "bytebuffer");
+                put(Short.class, "int16");
+                put(Integer.class, "int32");
+                put(Long.class, "int64");
+                put(Double.class, "double");
+                put(Float.class, "float");
+
+                // Time serializers/deserializers
+                put(Duration.class, "duration");
+                put(Instant.class, "instant");
+                put(LocalDate.class, "localdate");
+                put(LocalDateTime.class, "localdatetime");
+                put(LocalTime.class, "localtime");
+                put(MonthDay.class, "monthday");
+                put(OffsetDateTime.class, "offsetdatetime");
+                put(OffsetTime.class, "offsettime");
+                put(Period.class, "period");
+                put(Year.class, "year");
+                put(YearMonth.class, "yearmonth");
+                put(ZonedDateTime.class, "zoneddatetime");
+                put(ZoneOffset.class, "zoneoffset");
+
+                // Tinkerpop Graph objects
+                put(Vertex.class, "vertex");
+                put(Edge.class, "edge");
+                put(Property.class, "property");
+                put(Path.class, "path");
+                put(VertexProperty.class, "vertexproperty");
+                put(Metrics.class, "metrics");
+                put(TraversalMetrics.class, "traversalmetrics");
+                put(Tree.class, "tree");
+            }};
+        }
+
+        @Override
+        public String getTypeNamespace() {
+            return GraphSONTokens.GREMLIN_TYPE_NAMESPACE;
+        }
+
+        static final class Builder implements GraphSONModuleBuilder {
+
+            private Builder() {}
+
+            @Override
+            public GraphSONModule create(final boolean normalize) {
+                return new GraphSONModuleV2d0(normalize);
+            }
+
+        }
+    }
+
+    /**
      * Version 1.0 of GraphSON.
      */
     static final class GraphSONModuleV1d0 extends GraphSONModule {
@@ -71,53 +209,65 @@ abstract class GraphSONModule extends SimpleModule {
         protected GraphSONModuleV1d0(final boolean normalize) {
             super("graphson-1.0");
             // graph
-            addSerializer(Edge.class, new GraphSONSerializers.EdgeJacksonSerializer(normalize));
-            addSerializer(Vertex.class, new GraphSONSerializers.VertexJacksonSerializer(normalize));
-            addSerializer(VertexProperty.class, new GraphSONSerializers.VertexPropertyJacksonSerializer(normalize));
-            addSerializer(Property.class, new GraphSONSerializers.PropertyJacksonSerializer());
-            addSerializer(TraversalMetrics.class, new GraphSONSerializers.TraversalMetricsJacksonSerializer());
-            addSerializer(TraversalExplanation.class, new GraphSONSerializers.TraversalExplanationJacksonSerializer());
-            addSerializer(Path.class, new GraphSONSerializers.PathJacksonSerializer());
-            addSerializer(StarGraphGraphSONSerializer.DirectionalStarGraph.class, new StarGraphGraphSONSerializer(normalize));
-            addSerializer(Tree.class, new GraphSONSerializers.TreeJacksonSerializer());
+            addSerializer(Edge.class, new GraphSONSerializersV1d0.EdgeJacksonSerializer(normalize));
+            addSerializer(Vertex.class, new GraphSONSerializersV1d0.VertexJacksonSerializer(normalize));
+            addSerializer(VertexProperty.class, new GraphSONSerializersV1d0.VertexPropertyJacksonSerializer(normalize));
+            addSerializer(Property.class, new GraphSONSerializersV1d0.PropertyJacksonSerializer());
+            addSerializer(TraversalMetrics.class, new GraphSONSerializersV1d0.TraversalMetricsJacksonSerializer());
+            addSerializer(TraversalExplanation.class, new GraphSONSerializersV1d0.TraversalExplanationJacksonSerializer());
+            addSerializer(Path.class, new GraphSONSerializersV1d0.PathJacksonSerializer());
+            addSerializer(DirectionalStarGraph.class, new StarGraphGraphSONSerializerV1d0(normalize));
+            addSerializer(Tree.class, new GraphSONSerializersV1d0.TreeJacksonSerializer());
            
             // java.util
-            addSerializer(Map.Entry.class, new JavaUtilSerializers.MapEntryJacksonSerializer());
+            addSerializer(Map.Entry.class, new JavaUtilSerializersV1d0.MapEntryJacksonSerializer());
 
             // java.time
-            addSerializer(Duration.class, new JavaTimeSerializers.DurationJacksonSerializer());
-            addSerializer(Instant.class, new JavaTimeSerializers.InstantJacksonSerializer());
-            addSerializer(LocalDate.class, new JavaTimeSerializers.LocalDateJacksonSerializer());
-            addSerializer(LocalDateTime.class, new JavaTimeSerializers.LocalDateTimeJacksonSerializer());
-            addSerializer(LocalTime.class, new JavaTimeSerializers.LocalTimeJacksonSerializer());
-            addSerializer(MonthDay.class, new JavaTimeSerializers.MonthDayJacksonSerializer());
-            addSerializer(OffsetDateTime.class, new JavaTimeSerializers.OffsetDateTimeJacksonSerializer());
-            addSerializer(OffsetTime.class, new JavaTimeSerializers.OffsetTimeJacksonSerializer());
-            addSerializer(Period.class, new JavaTimeSerializers.PeriodJacksonSerializer());
-            addSerializer(Year.class, new JavaTimeSerializers.YearJacksonSerializer());
-            addSerializer(YearMonth.class, new JavaTimeSerializers.YearMonthJacksonSerializer());
-            addSerializer(ZonedDateTime.class, new JavaTimeSerializers.ZonedDateTimeJacksonSerializer());
-            addSerializer(ZoneOffset.class, new JavaTimeSerializers.ZoneOffsetJacksonSerializer());
-
-            addDeserializer(Duration.class, new JavaTimeSerializers.DurationJacksonDeserializer());
-            addDeserializer(Instant.class, new JavaTimeSerializers.InstantJacksonDeserializer());
-            addDeserializer(LocalDate.class, new JavaTimeSerializers.LocalDateJacksonDeserializer());
-            addDeserializer(LocalDateTime.class, new JavaTimeSerializers.LocalDateTimeJacksonDeserializer());
-            addDeserializer(LocalTime.class, new JavaTimeSerializers.LocalTimeJacksonDeserializer());
-            addDeserializer(MonthDay.class, new JavaTimeSerializers.MonthDayJacksonDeserializer());
-            addDeserializer(OffsetDateTime.class, new JavaTimeSerializers.OffsetDateTimeJacksonDeserializer());
-            addDeserializer(OffsetTime.class, new JavaTimeSerializers.OffsetTimeJacksonDeserializer());
-            addDeserializer(Period.class, new JavaTimeSerializers.PeriodJacksonDeserializer());
-            addDeserializer(Year.class, new JavaTimeSerializers.YearJacksonDeserializer());
-            addDeserializer(YearMonth.class, new JavaTimeSerializers.YearMonthJacksonDeserializer());
-            addDeserializer(ZonedDateTime.class, new JavaTimeSerializers.ZonedDateTimeJacksonDeserializer());
-            addDeserializer(ZoneOffset.class, new JavaTimeSerializers.ZoneOffsetJacksonDeserializer());
+            addSerializer(Duration.class, new JavaTimeSerializersV1d0.DurationJacksonSerializer());
+            addSerializer(Instant.class, new JavaTimeSerializersV1d0.InstantJacksonSerializer());
+            addSerializer(LocalDate.class, new JavaTimeSerializersV1d0.LocalDateJacksonSerializer());
+            addSerializer(LocalDateTime.class, new JavaTimeSerializersV1d0.LocalDateTimeJacksonSerializer());
+            addSerializer(LocalTime.class, new JavaTimeSerializersV1d0.LocalTimeJacksonSerializer());
+            addSerializer(MonthDay.class, new JavaTimeSerializersV1d0.MonthDayJacksonSerializer());
+            addSerializer(OffsetDateTime.class, new JavaTimeSerializersV1d0.OffsetDateTimeJacksonSerializer());
+            addSerializer(OffsetTime.class, new JavaTimeSerializersV1d0.OffsetTimeJacksonSerializer());
+            addSerializer(Period.class, new JavaTimeSerializersV1d0.PeriodJacksonSerializer());
+            addSerializer(Year.class, new JavaTimeSerializersV1d0.YearJacksonSerializer());
+            addSerializer(YearMonth.class, new JavaTimeSerializersV1d0.YearMonthJacksonSerializer());
+            addSerializer(ZonedDateTime.class, new JavaTimeSerializersV1d0.ZonedDateTimeJacksonSerializer());
+            addSerializer(ZoneOffset.class, new JavaTimeSerializersV1d0.ZoneOffsetJacksonSerializer());
+
+            addDeserializer(Duration.class, new JavaTimeSerializersV1d0.DurationJacksonDeserializer());
+            addDeserializer(Instant.class, new JavaTimeSerializersV1d0.InstantJacksonDeserializer());
+            addDeserializer(LocalDate.class, new JavaTimeSerializersV1d0.LocalDateJacksonDeserializer());
+            addDeserializer(LocalDateTime.class, new JavaTimeSerializersV1d0.LocalDateTimeJacksonDeserializer());
+            addDeserializer(LocalTime.class, new JavaTimeSerializersV1d0.LocalTimeJacksonDeserializer());
+            addDeserializer(MonthDay.class, new JavaTimeSerializersV1d0.MonthDayJacksonDeserializer());
+            addDeserializer(OffsetDateTime.class, new JavaTimeSerializersV1d0.OffsetDateTimeJacksonDeserializer());
+            addDeserializer(OffsetTime.class, new JavaTimeSerializersV1d0.OffsetTimeJacksonDeserializer());
+            addDeserializer(Period.class, new JavaTimeSerializersV1d0.PeriodJacksonDeserializer());
+            addDeserializer(Year.class, new JavaTimeSerializersV1d0.YearJacksonDeserializer());
+            addDeserializer(YearMonth.class, new JavaTimeSerializersV1d0.YearMonthJacksonDeserializer());
+            addDeserializer(ZonedDateTime.class, new JavaTimeSerializersV1d0.ZonedDateTimeJacksonDeserializer());
+            addDeserializer(ZoneOffset.class, new JavaTimeSerializersV1d0.ZoneOffsetJacksonDeserializer());
         }
 
         public static Builder build() {
             return new Builder();
         }
 
+        @Override
+        public Map<Class, String> getTypeDefinitions() {
+            // null is fine and handled by the GraphSONMapper
+            return null;
+        }
+
+        @Override
+        public String getTypeNamespace() {
+            // null is fine and handled by the GraphSONMapper
+            return null;
+        }
+
         static final class Builder implements GraphSONModuleBuilder {
 
             private Builder() {}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONReader.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONReader.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONReader.java
index d95fdff..0b27c61 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONReader.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONReader.java
@@ -35,7 +35,7 @@ import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedProperty;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
 import org.apache.tinkerpop.gremlin.structure.util.star.StarGraph;
-import org.apache.tinkerpop.gremlin.structure.util.star.StarGraphGraphSONSerializer;
+import org.apache.tinkerpop.gremlin.structure.util.star.StarGraphGraphSONDeserializer;
 import org.apache.tinkerpop.gremlin.util.function.FunctionUtils;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.apache.tinkerpop.shaded.jackson.core.type.TypeReference;
@@ -169,14 +169,14 @@ public final class GraphSONReader implements GraphReader {
                              final Function<Attachable<Edge>, Edge> edgeAttachMethod,
                              final Direction attachEdgesOfThisDirection) throws IOException {
         final Map<String, Object> vertexData = mapper.readValue(inputStream, mapTypeReference);
-        final StarGraph starGraph = StarGraphGraphSONSerializer.readStarGraphVertex(vertexData);
+        final StarGraph starGraph = StarGraphGraphSONDeserializer.readStarGraphVertex(vertexData);
         if (vertexAttachMethod != null) vertexAttachMethod.apply(starGraph.getStarVertex());
 
         if (vertexData.containsKey(GraphSONTokens.OUT_E) && (attachEdgesOfThisDirection == Direction.BOTH || attachEdgesOfThisDirection == Direction.OUT))
-            StarGraphGraphSONSerializer.readStarGraphEdges(edgeAttachMethod, starGraph, vertexData, GraphSONTokens.OUT_E);
+            StarGraphGraphSONDeserializer.readStarGraphEdges(edgeAttachMethod, starGraph, vertexData, GraphSONTokens.OUT_E);
 
         if (vertexData.containsKey(GraphSONTokens.IN_E) && (attachEdgesOfThisDirection == Direction.BOTH || attachEdgesOfThisDirection == Direction.IN))
-            StarGraphGraphSONSerializer.readStarGraphEdges(edgeAttachMethod, starGraph, vertexData, GraphSONTokens.IN_E);
+            StarGraphGraphSONDeserializer.readStarGraphEdges(edgeAttachMethod, starGraph, vertexData, GraphSONTokens.IN_E);
 
         return starGraph.getStarVertex();
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializerProvider.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializerProvider.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializerProvider.java
index ed20fd9..c373692 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializerProvider.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializerProvider.java
@@ -26,17 +26,24 @@ import org.apache.tinkerpop.shaded.jackson.databind.ser.SerializerFactory;
 import org.apache.tinkerpop.shaded.jackson.databind.ser.std.ToStringSerializer;
 
 /**
- * Implementation of the {@code DefaultSerializerProvider} for Jackson that users the {@code ToStringSerializer} for
+ * Implementation of the {@code DefaultSerializerProvider} for Jackson that uses the {@code ToStringSerializer} for
  * unknown types.
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 final class GraphSONSerializerProvider extends DefaultSerializerProvider {
     private static final long serialVersionUID = 1L;
-    private static final ToStringSerializer toStringSerializer = new ToStringSerializer();
+    private static JsonSerializer<Object> unknownTypeSerializer = new ToStringSerializer();
 
-    public GraphSONSerializerProvider() {
+    public GraphSONSerializerProvider(GraphSONVersion version) {
         super();
+        if (version == GraphSONVersion.V1_0) {
+            setDefaultKeySerializer(new GraphSONSerializersV1d0.GraphSONKeySerializer());
+            unknownTypeSerializer = new ToStringSerializer();
+        } else {
+            setDefaultKeySerializer(new GraphSONSerializersV2d0.GraphSONKeySerializer());
+            unknownTypeSerializer = new ToStringGraphSONSerializer();
+        }
     }
 
     protected GraphSONSerializerProvider(final SerializerProvider src,
@@ -46,7 +53,7 @@ final class GraphSONSerializerProvider extends DefaultSerializerProvider {
 
     @Override
     public JsonSerializer<Object> getUnknownTypeSerializer(final Class<?> aClass) {
-        return toStringSerializer;
+        return unknownTypeSerializer;
     }
 
     @Override


[19/19] tinkerpop git commit: Minor code cleanup.

Posted by sp...@apache.org.
Minor code cleanup.

Mostly finalizing variables where required. CTR


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f929db03
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f929db03
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f929db03

Branch: refs/heads/master
Commit: f929db03a9294c59f792e9c1b89a244203294d5a
Parents: 4710690
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Aug 22 14:29:55 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Aug 22 14:29:55 2016 -0400

----------------------------------------------------------------------
 .../traversal/util/DefaultTraversalMetrics.java |  11 +-
 .../process/traversal/util/MutableMetrics.java  |  10 +-
 .../structure/io/graphson/GraphSONMapper.java   |  31 +-
 .../io/graphson/GraphSONSerializersV2d0.java    |  47 +--
 .../io/graphson/GraphSONTypeDeserializer.java   |  42 ++-
 .../io/graphson/GraphSONTypeIdResolver.java     |  12 +-
 .../graphson/GraphSONTypeResolverBuilder.java   |  14 +-
 .../io/graphson/GraphSONTypeSerializer.java     |  37 +--
 .../structure/io/graphson/GraphSONUtil.java     |  10 +-
 .../structure/io/graphson/JsonParserConcat.java |   6 +-
 .../io/graphson/TinkerPopJacksonModule.java     |   2 +-
 .../io/graphson/ToStringGraphSONSerializer.java |   3 +-
 ...aphSONMapperV2d0PartialEmbeddedTypeTest.java |  26 +-
 .../AbstractGraphSONMessageSerializerV2d0.java  |   7 +-
 ...raphSONMessageSerializerGremlinTestV1d0.java |  14 +-
 ...raphSONMessageSerializerGremlinTestV2d0.java |  12 +-
 .../structure/TinkerIoRegistryV2d0.java         |   2 +-
 .../TinkerGraphGraphSONSerializerV2d0Test.java  | 286 ++++++++++---------
 18 files changed, 290 insertions(+), 282 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
index 058386b..ce52ffc 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
@@ -39,7 +39,9 @@ import java.util.concurrent.TimeUnit;
  * @author Bob Briody (http://bobbriody.com)
  */
 public final class DefaultTraversalMetrics implements TraversalMetrics, Serializable {
-    // toString() specific headers
+    /**
+     * toString() specific headers
+     */
     private static final String[] HEADERS = {"Step", "Count", "Traversers", "Time (ms)", "% Dur"};
 
     private final Map<String, MutableMetrics> metrics = new HashMap<>();
@@ -54,9 +56,10 @@ public final class DefaultTraversalMetrics implements TraversalMetrics, Serializ
     public DefaultTraversalMetrics() {
     }
 
-    // This is only a convenient constructor needed for GraphSON deserialization.
-    // TODO: see if that's ok to add that.
-    public DefaultTraversalMetrics(long totalStepDurationNs, List<MutableMetrics> metricsMap) {
+    /**
+     * This is only a convenient constructor needed for GraphSON deserialization.
+     */
+    public DefaultTraversalMetrics(final long totalStepDurationNs, final List<MutableMetrics> metricsMap) {
         this.totalStepDuration = totalStepDurationNs;
         this.computedMetrics = new LinkedHashMap<>(metrics.size());
         metricsMap.forEach(m -> computedMetrics.put(m.getId(), m.getImmutableClone()));

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java
index 3b0c886..19e2069 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java
@@ -31,7 +31,7 @@ public class MutableMetrics extends ImmutableMetrics implements Cloneable {
 
     // Note: if you add new members then you probably need to add them to the copy constructor;
 
-    private long tempTime = -1l;
+    private long tempTime = -1L;
 
     protected MutableMetrics() {
         // necessary for gryo serialization
@@ -42,10 +42,10 @@ public class MutableMetrics extends ImmutableMetrics implements Cloneable {
         this.name = name;
     }
 
-    // create a MutableMetrics from an Immutable one.
-    // needed that for tests, don't know if it is worth keeping it public.
-    // TODO: see if it's ok to add this
-    public MutableMetrics(Metrics other) {
+    /**
+     * Create a {@code MutableMetrics} from an immutable one.
+     */
+    public MutableMetrics(final Metrics other) {
         this.id = other.getId();
         this.name = other.getName();
         this.annotations.putAll(other.getAnnotations());

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapper.java
index 2a000a3..06fe51c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapper.java
@@ -90,7 +90,7 @@ public class GraphSONMapper implements Mapper<ObjectMapper> {
         final ObjectMapper om = new ObjectMapper();
         om.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
 
-        GraphSONModule graphSONModule = version.getBuilder().create(normalize);
+        final GraphSONModule graphSONModule = version.getBuilder().create(normalize);
         om.registerModule(graphSONModule);
         customModules.forEach(om::registerModule);
 
@@ -110,37 +110,33 @@ public class GraphSONMapper implements Mapper<ObjectMapper> {
             }
         } else if (version == GraphSONVersion.V2_0) {
             if (typeInfo != TypeInfo.NO_TYPES) {
-                GraphSONTypeIdResolver graphSONTypeIdResolver = new GraphSONTypeIdResolver();
+                final GraphSONTypeIdResolver graphSONTypeIdResolver = new GraphSONTypeIdResolver();
                 final TypeResolverBuilder typer = new GraphSONTypeResolverBuilder()
                         .typesEmbedding(getTypeInfo())
                         .valuePropertyName(GraphSONTokens.VALUEPROP)
                         .init(JsonTypeInfo.Id.CUSTOM, graphSONTypeIdResolver)
-                        .typeProperty(GraphSONTokens.VALUETYPE)
-                        ;
+                        .typeProperty(GraphSONTokens.VALUETYPE);
 
                 // Registers native Java types that are supported by Jackson
                 registerJavaBaseTypes(graphSONTypeIdResolver);
 
                 // Registers the GraphSON Module's types
-                graphSONModule.getTypeDefinitions()
-                        .forEach(
-                                (targetClass, typeId) -> graphSONTypeIdResolver.addCustomType(String.format("%s:%s", graphSONModule.getTypeNamespace(), typeId), targetClass)
-                        );
-
+                graphSONModule.getTypeDefinitions().forEach(
+                        (targetClass, typeId) -> graphSONTypeIdResolver.addCustomType(
+                                String.format("%s:%s", graphSONModule.getTypeNamespace(), typeId), targetClass));
 
                 // Register types to typeResolver for the Custom modules
                 customModules.forEach(e -> {
                     if (e instanceof TinkerPopJacksonModule) {
-                        TinkerPopJacksonModule mod = (TinkerPopJacksonModule) e;
-                        Map<Class, String> moduleTypeDefinitions = mod.getTypeDefinitions();
+                        final TinkerPopJacksonModule mod = (TinkerPopJacksonModule) e;
+                        final Map<Class, String> moduleTypeDefinitions = mod.getTypeDefinitions();
                         if (moduleTypeDefinitions != null) {
-                            if (mod.getTypeNamespace() == null || mod.getTypeNamespace().isEmpty()) {
+                            if (mod.getTypeNamespace() == null || mod.getTypeNamespace().isEmpty())
                                 throw new IllegalStateException("Cannot specify a module for GraphSON 2.0 with type definitions but without a type Domain. " +
                                         "If no specific type domain is required, use Gremlin's default domain, \"gremlin\" but there may be collisions.");
-                            }
-                            moduleTypeDefinitions.forEach(
-                                    (targetClass, typeId) -> graphSONTypeIdResolver.addCustomType(String.format("%s:%s", mod.getTypeNamespace(), typeId), targetClass)
-                            );
+
+                            moduleTypeDefinitions.forEach((targetClass, typeId) -> graphSONTypeIdResolver.addCustomType(
+                                            String.format("%s:%s", mod.getTypeNamespace(), typeId), targetClass));
                         }
                     }
                 });
@@ -277,7 +273,8 @@ public class GraphSONMapper implements Mapper<ObjectMapper> {
          * the value of {@link #embedTypes(boolean)} where {@link TypeInfo#PARTIAL_TYPES} will set it to true and
          * {@link TypeInfo#NO_TYPES} will set it to false.
          *
-         * The level can be NO_TYPES or PARTIAL_TYPES, and could be extended in the future.
+         * The level can be {@link TypeInfo#NO_TYPES} or {@link TypeInfo#PARTIAL_TYPES}, and could be extended in the
+         * future.
          */
         public Builder typeInfo(final TypeInfo typeInfo) {
             this.typeInfo = typeInfo;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2d0.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2d0.java
index a689a11..f6a2f89 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2d0.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2d0.java
@@ -159,9 +159,7 @@ public class GraphSONSerializersV2d0 {
                 jsonGenerator.writeFieldName(GraphSONTokens.PROPERTIES);
 
                 jsonGenerator.writeStartObject();
-                elementProperties.forEachRemaining(
-                        prop -> safeWriteObjectField(jsonGenerator, prop.key(), prop)
-                );
+                elementProperties.forEachRemaining(prop -> safeWriteObjectField(jsonGenerator, prop.key(), prop));
                 jsonGenerator.writeEndObject();
             }
         }
@@ -271,7 +269,7 @@ public class GraphSONSerializersV2d0 {
         @Override
         public void serialize(final Tree tree, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) throws IOException, JsonGenerationException {
             jsonGenerator.writeStartArray();
-            Set<Map.Entry<Element, Tree>> set = tree.entrySet();
+            final Set<Map.Entry<Element, Tree>> set = tree.entrySet();
             for (Map.Entry<Element, Tree> entry : set) {
                 jsonGenerator.writeStartObject();
                 jsonGenerator.writeObjectField(GraphSONTokens.KEY, entry.getKey());
@@ -326,7 +324,8 @@ public class GraphSONSerializersV2d0 {
         }
 
         @Override
-        public void serialize(Integer integer, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+        public void serialize(final Integer integer, final JsonGenerator jsonGenerator,
+                              final SerializerProvider serializerProvider) throws IOException {
             jsonGenerator.writeNumber(((Integer) integer).intValue());
         }
     }
@@ -337,7 +336,8 @@ public class GraphSONSerializersV2d0 {
         }
 
         @Override
-        public void serialize(Double doubleValue, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+        public void serialize(final Double doubleValue, final JsonGenerator jsonGenerator,
+                              final SerializerProvider serializerProvider) throws IOException {
             jsonGenerator.writeNumber(doubleValue);
         }
     }
@@ -367,7 +367,8 @@ public class GraphSONSerializersV2d0 {
         }
 
         @Override
-        public void serialize(Metrics metrics, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+        public void serialize(final Metrics metrics, final JsonGenerator jsonGenerator,
+                              final SerializerProvider serializerProvider) throws IOException {
             final Map<String, Object> m = new HashMap<>();
             m.put(GraphSONTokens.ID, metrics.getId());
             m.put(GraphSONTokens.NAME, metrics.getName());
@@ -422,11 +423,11 @@ public class GraphSONSerializersV2d0 {
         }
 
         @Override
-        public T deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+        public T deserialize(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
 
             jsonParser.nextToken();
             // This will automatically parse all typed stuff.
-            Map<String, Object> mapData = deserializationContext.readValue(jsonParser, Map.class);
+            final Map<String, Object> mapData = deserializationContext.readValue(jsonParser, Map.class);
 
             return createObject(mapData);
         }
@@ -442,7 +443,7 @@ public class GraphSONSerializersV2d0 {
         }
 
         @Override
-        Vertex createObject(Map<String, Object> vertexData) {
+        Vertex createObject(final Map<String, Object> vertexData) {
             return new DetachedVertex(
                     vertexData.get(GraphSONTokens.ID),
                     vertexData.get(GraphSONTokens.LABEL).toString(),
@@ -458,7 +459,7 @@ public class GraphSONSerializersV2d0 {
         }
 
         @Override
-        Edge createObject(Map<String, Object> edgeData) {
+        Edge createObject(final Map<String, Object> edgeData) {
             return new DetachedEdge(
                     edgeData.get(GraphSONTokens.ID),
                     edgeData.get(GraphSONTokens.LABEL).toString(),
@@ -476,7 +477,7 @@ public class GraphSONSerializersV2d0 {
         }
 
         @Override
-        Property createObject(Map<String, Object> propData) {
+        Property createObject(final Map<String, Object> propData) {
             return new DetachedProperty(
                     (String) propData.get(GraphSONTokens.KEY),
                     propData.get(GraphSONTokens.VALUE));
@@ -490,11 +491,11 @@ public class GraphSONSerializersV2d0 {
         }
 
         @Override
-        Path createObject(Map<String, Object> pathData) {
-            Path p = MutablePath.make();
+        Path createObject(final Map<String, Object> pathData) {
+            final Path p = MutablePath.make();
 
-            List labels = (List) pathData.get(GraphSONTokens.LABELS);
-            List objects = (List) pathData.get(GraphSONTokens.OBJECTS);
+            final List labels = (List) pathData.get(GraphSONTokens.LABELS);
+            final List objects = (List) pathData.get(GraphSONTokens.OBJECTS);
 
             for (int i = 0; i < objects.size(); i++) {
                 p.extend(objects.get(i), new HashSet((List) labels.get(i)));
@@ -510,7 +511,7 @@ public class GraphSONSerializersV2d0 {
         }
 
         @Override
-        VertexProperty createObject(Map<String, Object> propData) {
+        VertexProperty createObject(final Map<String, Object> propData) {
             return new DetachedVertexProperty(
                     propData.get(GraphSONTokens.ID),
                     (String) propData.get(GraphSONTokens.LABEL),
@@ -526,8 +527,8 @@ public class GraphSONSerializersV2d0 {
         }
 
         @Override
-        Metrics createObject(Map<String, Object> metricsData) {
-            MutableMetrics m = new MutableMetrics((String)metricsData.get(GraphSONTokens.ID), (String)metricsData.get(GraphSONTokens.NAME));
+        Metrics createObject(final Map<String, Object> metricsData) {
+            final MutableMetrics m = new MutableMetrics((String)metricsData.get(GraphSONTokens.ID), (String)metricsData.get(GraphSONTokens.NAME));
 
             m.setDuration(Math.round((Double) metricsData.get(GraphSONTokens.DURATION) * 1000000), TimeUnit.NANOSECONDS);
             for (Map.Entry<String, Long> count : ((Map<String, Long>)metricsData.getOrDefault(GraphSONTokens.COUNTS, new HashMap<>(0))).entrySet()) {
@@ -550,7 +551,7 @@ public class GraphSONSerializersV2d0 {
         }
 
         @Override
-        TraversalMetrics createObject(Map<String, Object> traversalMetricsData) {
+        TraversalMetrics createObject(final Map<String, Object> traversalMetricsData) {
             return new DefaultTraversalMetrics(
                     Math.round((Double) traversalMetricsData.get(GraphSONTokens.DURATION) * 1000000),
                     (List<MutableMetrics>) traversalMetricsData.get(GraphSONTokens.METRICS)
@@ -565,9 +566,9 @@ public class GraphSONSerializersV2d0 {
         }
 
         @Override
-        public Tree deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
-            List<Map> data = deserializationContext.readValue(jsonParser, List.class);
-            Tree t = new Tree();
+        public Tree deserialize(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            final List<Map> data = deserializationContext.readValue(jsonParser, List.class);
+            final Tree t = new Tree();
             for (Map<String, Object> entry : data) {
                 t.put(entry.get(GraphSONTokens.KEY), entry.get(GraphSONTokens.VALUE));
             }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeDeserializer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeDeserializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeDeserializer.java
index e614a7a..1950834 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeDeserializer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeDeserializer.java
@@ -51,8 +51,8 @@ public class GraphSONTypeDeserializer extends TypeDeserializerBase {
     private static final JavaType arrayJavaType = TypeFactory.defaultInstance().constructType(List.class);
 
 
-    GraphSONTypeDeserializer(JavaType baseType, TypeIdResolver idRes, String typePropertyName,
-                             TypeInfo typeInfo, String valuePropertyName){
+    GraphSONTypeDeserializer(final JavaType baseType, final TypeIdResolver idRes, final String typePropertyName,
+                             final TypeInfo typeInfo, final String valuePropertyName){
         super(baseType, idRes, typePropertyName, false, null);
         this.baseType = baseType;
         this.idRes = idRes;
@@ -83,31 +83,31 @@ public class GraphSONTypeDeserializer extends TypeDeserializerBase {
     }
 
     @Override
-    public Object deserializeTypedFromObject(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
+    public Object deserializeTypedFromObject(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException {
         return deserialize(jsonParser, deserializationContext);
     }
 
     @Override
-    public Object deserializeTypedFromArray(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
+    public Object deserializeTypedFromArray(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException {
         return deserialize(jsonParser, deserializationContext);
     }
 
     @Override
-    public Object deserializeTypedFromScalar(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
+    public Object deserializeTypedFromScalar(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException {
         return deserialize(jsonParser, deserializationContext);
     }
 
     @Override
-    public Object deserializeTypedFromAny(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
+    public Object deserializeTypedFromAny(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException {
         return deserialize(jsonParser, deserializationContext);
     }
 
     /**
      * Main logic for the deserialization.
      */
-    private Object deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
-        TokenBuffer buf = new TokenBuffer(jsonParser.getCodec(), false);
-        TokenBuffer localCopy = new TokenBuffer(jsonParser.getCodec(), false);
+    private Object deserialize(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException {
+        final TokenBuffer buf = new TokenBuffer(jsonParser.getCodec(), false);
+        final TokenBuffer localCopy = new TokenBuffer(jsonParser.getCodec(), false);
 
         // Detect type
         try {
@@ -148,7 +148,7 @@ public class GraphSONTypeDeserializer extends TypeDeserializerBase {
 
                 if (typeName != null && valueCalled) {
                     // Type pattern detected.
-                    JavaType typeFromId = idRes.typeFromId(typeName);
+                    final JavaType typeFromId = idRes.typeFromId(typeName);
 
                     if (!baseType.isJavaLangObject() && baseType != typeFromId) {
                         throw new InstantiationException(
@@ -158,13 +158,13 @@ public class GraphSONTypeDeserializer extends TypeDeserializerBase {
                         );
                     }
 
-                    JsonDeserializer jsonDeserializer = deserializationContext.findContextualValueDeserializer(typeFromId, null);
+                    final JsonDeserializer jsonDeserializer = deserializationContext.findContextualValueDeserializer(typeFromId, null);
 
-                    JsonParser tokenParser = localCopy.asParser();
+                    final JsonParser tokenParser = localCopy.asParser();
                     tokenParser.nextToken();
-                    Object value = jsonDeserializer.deserialize(tokenParser, deserializationContext);
+                    final Object value = jsonDeserializer.deserialize(tokenParser, deserializationContext);
 
-                    JsonToken t = jsonParser.nextToken();
+                    final JsonToken t = jsonParser.nextToken();
                     if (t == JsonToken.END_OBJECT) {
                         // we're good to go
                         return value;
@@ -191,19 +191,17 @@ public class GraphSONTypeDeserializer extends TypeDeserializerBase {
 
         // Concatenate buf + localCopy + end of original content
 
-        JsonParser toUseParser;
-        JsonParser bufferParser = buf.asParser();
-        JsonParser localCopyParser = localCopy.asParser();
+        final JsonParser bufferParser = buf.asParser();
+        final JsonParser localCopyParser = localCopy.asParser();
 
+        final JsonParser[] array = {bufferParser, localCopyParser, jsonParser};
 
-        JsonParser[] array = {bufferParser, localCopyParser, jsonParser};
-
-        toUseParser = new JsonParserConcat(array);
+        final JsonParser toUseParser = new JsonParserConcat(array);
         toUseParser.nextToken();
 
         // If a type has been specified in parameter :
         if (!baseType.isJavaLangObject()) {
-            JsonDeserializer jsonDeserializer = deserializationContext.findContextualValueDeserializer(baseType, null);
+            final JsonDeserializer jsonDeserializer = deserializationContext.findContextualValueDeserializer(baseType, null);
             return jsonDeserializer.deserialize(toUseParser, deserializationContext);
         }
         // Otherwise, detect the current structure :
@@ -217,7 +215,7 @@ public class GraphSONTypeDeserializer extends TypeDeserializerBase {
                 // then consider it a simple type, even though we shouldn't be here if it was a simple type.
                 // TODO : maybe throw an error instead?
                 // throw deserializationContext.mappingException("Roger, we have a problem deserializing");
-                JsonDeserializer jsonDeserializer = deserializationContext.findContextualValueDeserializer(baseType, null);
+                final JsonDeserializer jsonDeserializer = deserializationContext.findContextualValueDeserializer(baseType, null);
                 return jsonDeserializer.deserialize(toUseParser, deserializationContext);
             }
         }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeIdResolver.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeIdResolver.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeIdResolver.java
index 3edff73..5ad7265 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeIdResolver.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeIdResolver.java
@@ -48,7 +48,7 @@ public class GraphSONTypeIdResolver implements TypeIdResolver {
     }
 
     // Override manually a type definition.
-    public GraphSONTypeIdResolver addCustomType(String name, Class clasz) {
+    public GraphSONTypeIdResolver addCustomType(final String name, final Class clasz) {
         // May override types already registered, that's wanted.
         getIdToType().put(name, TypeFactory.defaultInstance().constructType(clasz));
         getTypeToId().put(clasz, name);
@@ -56,16 +56,16 @@ public class GraphSONTypeIdResolver implements TypeIdResolver {
     }
 
     @Override
-    public void init(JavaType javaType) {
+    public void init(final JavaType javaType) {
     }
 
     @Override
-    public String idFromValue(Object o) {
+    public String idFromValue(final Object o) {
         return idFromValueAndType(o, o.getClass());
     }
 
     @Override
-    public String idFromValueAndType(Object o, Class<?> aClass) {
+    public String idFromValueAndType(final Object o, final Class<?> aClass) {
         if (!getTypeToId().containsKey(aClass)) {
             // If one wants to serialize an object with a type, but hasn't registered
             // a typeID for that class, fail.
@@ -82,12 +82,12 @@ public class GraphSONTypeIdResolver implements TypeIdResolver {
     }
 
     @Override
-    public JavaType typeFromId(String s) {
+    public JavaType typeFromId(final String s) {
         return typeFromId(null, s);
     }
 
     @Override
-    public JavaType typeFromId(DatabindContext databindContext, String s) {
+    public JavaType typeFromId(final DatabindContext databindContext, final String s) {
         // Get the type from the string from the stored Map. If not found, default to deserialize as a String.
         return getIdToType().containsKey(s)
                 ? getIdToType().get(s)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeResolverBuilder.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeResolverBuilder.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeResolverBuilder.java
index 001dd02..7d3d03c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeResolverBuilder.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeResolverBuilder.java
@@ -41,24 +41,26 @@ public class GraphSONTypeResolverBuilder extends StdTypeResolverBuilder {
     private String valuePropertyName;
 
     @Override
-    public TypeDeserializer buildTypeDeserializer(DeserializationConfig config, JavaType baseType, Collection<NamedType> subtypes) {
-        TypeIdResolver idRes = this.idResolver(config, baseType, subtypes, false, true);
+    public TypeDeserializer buildTypeDeserializer(final DeserializationConfig config, final JavaType baseType,
+                                                  final Collection<NamedType> subtypes) {
+        final TypeIdResolver idRes = this.idResolver(config, baseType, subtypes, false, true);
         return new GraphSONTypeDeserializer(baseType, idRes, this.getTypeProperty(), typeInfo, valuePropertyName);
     }
 
 
     @Override
-    public TypeSerializer buildTypeSerializer(SerializationConfig config, JavaType baseType, Collection<NamedType> subtypes) {
-        TypeIdResolver idRes = this.idResolver(config, baseType, subtypes, true, false);
+    public TypeSerializer buildTypeSerializer(final SerializationConfig config, final JavaType baseType,
+                                              final Collection<NamedType> subtypes) {
+        final TypeIdResolver idRes = this.idResolver(config, baseType, subtypes, true, false);
         return new GraphSONTypeSerializer(idRes, this.getTypeProperty(), typeInfo, valuePropertyName);
     }
 
-    public GraphSONTypeResolverBuilder valuePropertyName(String valuePropertyName) {
+    public GraphSONTypeResolverBuilder valuePropertyName(final String valuePropertyName) {
         this.valuePropertyName = valuePropertyName;
         return this;
     }
 
-    public GraphSONTypeResolverBuilder typesEmbedding(TypeInfo typeInfo) {
+    public GraphSONTypeResolverBuilder typesEmbedding(final TypeInfo typeInfo) {
         this.typeInfo = typeInfo;
         return this;
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java
index 98cf16a..01e5a79 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java
@@ -48,7 +48,8 @@ public class GraphSONTypeSerializer extends TypeSerializer {
     private final TypeInfo typeInfo;
     private final String valuePropertyName;
 
-    GraphSONTypeSerializer(TypeIdResolver idRes, String propertyName, TypeInfo typeInfo, String valuePropertyName) {
+    GraphSONTypeSerializer(final TypeIdResolver idRes, final String propertyName, final TypeInfo typeInfo,
+                           final String valuePropertyName) {
         this.idRes = idRes;
         this.propertyName = propertyName;
         this.typeInfo = typeInfo;
@@ -56,7 +57,7 @@ public class GraphSONTypeSerializer extends TypeSerializer {
     }
 
     @Override
-    public TypeSerializer forProperty(BeanProperty beanProperty) {
+    public TypeSerializer forProperty(final BeanProperty beanProperty) {
         return this;
     }
 
@@ -76,77 +77,77 @@ public class GraphSONTypeSerializer extends TypeSerializer {
     }
 
     @Override
-    public void writeTypePrefixForScalar(Object o, JsonGenerator jsonGenerator) throws IOException {
+    public void writeTypePrefixForScalar(final Object o, final JsonGenerator jsonGenerator) throws IOException {
         if (canWriteTypeId()) {
             writeTypePrefix(jsonGenerator, getTypeIdResolver().idFromValueAndType(o, getClassFromObject(o)));
         }
     }
 
     @Override
-    public void writeTypePrefixForObject(Object o, JsonGenerator jsonGenerator) throws IOException {
+    public void writeTypePrefixForObject(final Object o, final JsonGenerator jsonGenerator) throws IOException {
         jsonGenerator.writeStartObject();
         // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypePrefix(Map);
     }
 
     @Override
-    public void writeTypePrefixForArray(Object o, JsonGenerator jsonGenerator) throws IOException {
+    public void writeTypePrefixForArray(final Object o, final JsonGenerator jsonGenerator) throws IOException {
         jsonGenerator.writeStartArray();
         // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypePrefix(List);
     }
 
     @Override
-    public void writeTypeSuffixForScalar(Object o, JsonGenerator jsonGenerator) throws IOException {
+    public void writeTypeSuffixForScalar(final Object o, final JsonGenerator jsonGenerator) throws IOException {
         if (canWriteTypeId()) {
             writeTypeSuffix(jsonGenerator);
         }
     }
 
     @Override
-    public void writeTypeSuffixForObject(Object o, JsonGenerator jsonGenerator) throws IOException {
+    public void writeTypeSuffixForObject(final Object o, final JsonGenerator jsonGenerator) throws IOException {
         jsonGenerator.writeEndObject();
         // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypeSuffix(Map);
     }
 
     @Override
-    public void writeTypeSuffixForArray(Object o, JsonGenerator jsonGenerator) throws IOException {
+    public void writeTypeSuffixForArray(final Object o, final JsonGenerator jsonGenerator) throws IOException {
         jsonGenerator.writeEndArray();
         // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypeSuffix(List);
     }
 
     @Override
-    public void writeCustomTypePrefixForScalar(Object o, JsonGenerator jsonGenerator, String s) throws IOException {
+    public void writeCustomTypePrefixForScalar(final Object o, final JsonGenerator jsonGenerator, final String s) throws IOException {
         if (canWriteTypeId()) {
             writeTypePrefix(jsonGenerator, s);
         }
     }
 
     @Override
-    public void writeCustomTypePrefixForObject(Object o, JsonGenerator jsonGenerator, String s) throws IOException {
+    public void writeCustomTypePrefixForObject(final Object o, final JsonGenerator jsonGenerator, final String s) throws IOException {
         jsonGenerator.writeStartObject();
         // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypePrefix(s);
     }
 
     @Override
-    public void writeCustomTypePrefixForArray(Object o, JsonGenerator jsonGenerator, String s) throws IOException {
+    public void writeCustomTypePrefixForArray(final Object o, final JsonGenerator jsonGenerator, final String s) throws IOException {
         jsonGenerator.writeStartArray();
         // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypePrefix(s);
     }
 
     @Override
-    public void writeCustomTypeSuffixForScalar(Object o, JsonGenerator jsonGenerator, String s) throws IOException {
+    public void writeCustomTypeSuffixForScalar(final Object o, final JsonGenerator jsonGenerator, final String s) throws IOException {
         if (canWriteTypeId()) {
             writeTypeSuffix(jsonGenerator);
         }
     }
 
     @Override
-    public void writeCustomTypeSuffixForObject(Object o, JsonGenerator jsonGenerator, String s) throws IOException {
+    public void writeCustomTypeSuffixForObject(final Object o, final JsonGenerator jsonGenerator, final String s) throws IOException {
         jsonGenerator.writeEndObject();
         // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypeSuffix(s);
     }
 
     @Override
-    public void writeCustomTypeSuffixForArray(Object o, JsonGenerator jsonGenerator, String s) throws IOException {
+    public void writeCustomTypeSuffixForArray(final Object o, final JsonGenerator jsonGenerator,final  String s) throws IOException {
         jsonGenerator.writeEndArray();
         // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypeSuffix(s);
     }
@@ -156,13 +157,13 @@ public class GraphSONTypeSerializer extends TypeSerializer {
                 && typeInfo == TypeInfo.PARTIAL_TYPES;
     }
 
-    private void writeTypePrefix(JsonGenerator jsonGenerator, String s) throws IOException {
+    private void writeTypePrefix(final JsonGenerator jsonGenerator, final String s) throws IOException {
         jsonGenerator.writeStartObject();
         jsonGenerator.writeStringField(this.getPropertyName(), s);
         jsonGenerator.writeFieldName(this.valuePropertyName);
     }
 
-    private void writeTypeSuffix(JsonGenerator jsonGenerator) throws IOException {
+    private void writeTypeSuffix(final JsonGenerator jsonGenerator) throws IOException {
         jsonGenerator.writeEndObject();
     }
 
@@ -172,9 +173,9 @@ public class GraphSONTypeSerializer extends TypeSerializer {
      **not** their implementations (TinkerGraph, DetachedVertex, TinkerEdge,
      etc..)
     */
-    private Class getClassFromObject(Object o) {
+    private Class getClassFromObject(final Object o) {
         // not the most efficient
-        Class c = o.getClass();
+        final  Class c = o.getClass();
         if (Vertex.class.isAssignableFrom(c)) {
             return Vertex.class;
         } else if (Edge.class.isAssignableFrom(c)) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONUtil.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONUtil.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONUtil.java
index 548bca1..9b90c78 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONUtil.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONUtil.java
@@ -56,21 +56,21 @@ public final class GraphSONUtil {
         }
     }
 
-    public static void writeStartObject(Object o, JsonGenerator jsonGenerator, TypeSerializer typeSerializer) throws IOException {
+    public static void writeStartObject(final Object o, final JsonGenerator jsonGenerator, final TypeSerializer typeSerializer) throws IOException {
         if (typeSerializer != null)
             typeSerializer.writeTypePrefixForObject(o, jsonGenerator);
         else
             jsonGenerator.writeStartObject();
     }
 
-    public static void writeEndObject(Object o, JsonGenerator jsonGenerator, TypeSerializer typeSerializer) throws IOException {
+    public static void writeEndObject(final Object o, final JsonGenerator jsonGenerator, final TypeSerializer typeSerializer) throws IOException {
         if (typeSerializer != null)
             typeSerializer.writeTypeSuffixForObject(o, jsonGenerator);
         else
             jsonGenerator.writeEndObject();
     }
 
-    public static void writeStartArray(Object o, JsonGenerator jsonGenerator, TypeSerializer typeSerializer) throws IOException {
+    public static void writeStartArray(final Object o, final JsonGenerator jsonGenerator, final TypeSerializer typeSerializer) throws IOException {
         if (typeSerializer != null)
             typeSerializer.writeTypePrefixForArray(o, jsonGenerator);
         else
@@ -78,14 +78,14 @@ public final class GraphSONUtil {
     }
 
 
-    public static void writeEndArray(Object o, JsonGenerator jsonGenerator, TypeSerializer typeSerializer) throws IOException {
+    public static void writeEndArray(final Object o, final JsonGenerator jsonGenerator, final TypeSerializer typeSerializer) throws IOException {
         if (typeSerializer != null)
             typeSerializer.writeTypeSuffixForArray(o, jsonGenerator);
         else
             jsonGenerator.writeEndArray();
     }
 
-    static void safeWriteObjectField(JsonGenerator jsonGenerator, String key, Object value) {
+    static void safeWriteObjectField(final JsonGenerator jsonGenerator, final String key, final Object value) {
         try {
             jsonGenerator.writeObjectField(key, value);
         } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JsonParserConcat.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JsonParserConcat.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JsonParserConcat.java
index 6b19e48..d285f73 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JsonParserConcat.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JsonParserConcat.java
@@ -37,15 +37,15 @@ import java.util.ArrayList;
  * @author Kevin Gallardo (https://kgdo.me)
  */
 public class JsonParserConcat extends JsonParserSequence {
-    protected JsonParserConcat(JsonParser[] parsers) {
+    protected JsonParserConcat(final JsonParser[] parsers) {
         super(parsers);
     }
 
-    public static JsonParserConcat createFlattened(JsonParser first, JsonParser second) {
+    public static JsonParserConcat createFlattened(final JsonParser first, final JsonParser second) {
         if (!(first instanceof JsonParserConcat) && !(second instanceof JsonParserConcat)) {
             return new JsonParserConcat(new JsonParser[]{first, second});
         } else {
-            ArrayList p = new ArrayList();
+            final ArrayList p = new ArrayList();
             if (first instanceof JsonParserConcat) {
                 ((JsonParserConcat) first).addFlattenedActiveParsers(p);
             } else {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TinkerPopJacksonModule.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TinkerPopJacksonModule.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TinkerPopJacksonModule.java
index 847027c..d15afcd 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TinkerPopJacksonModule.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TinkerPopJacksonModule.java
@@ -38,7 +38,7 @@ import java.util.Map;
  */
 public abstract class TinkerPopJacksonModule extends SimpleModule {
 
-    public TinkerPopJacksonModule(String name) {
+    public TinkerPopJacksonModule(final String name) {
         super(name);
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/ToStringGraphSONSerializer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/ToStringGraphSONSerializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/ToStringGraphSONSerializer.java
index fbd9e00..3f155fe 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/ToStringGraphSONSerializer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/ToStringGraphSONSerializer.java
@@ -34,7 +34,8 @@ import java.io.IOException;
  */
 public class ToStringGraphSONSerializer extends ToStringSerializer {
     @Override
-    public void serializeWithType(Object value, JsonGenerator gen, SerializerProvider provider, TypeSerializer typeSer) throws IOException {
+    public void serializeWithType(final Object value, final JsonGenerator gen, final SerializerProvider provider,
+                                  final TypeSerializer typeSer) throws IOException {
         this.serialize(value, gen, provider);
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperV2d0PartialEmbeddedTypeTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperV2d0PartialEmbeddedTypeTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperV2d0PartialEmbeddedTypeTest.java
index c2ad05e..e02588f 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperV2d0PartialEmbeddedTypeTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperV2d0PartialEmbeddedTypeTest.java
@@ -143,19 +143,19 @@ public class GraphSONMapperV2d0PartialEmbeddedTypeTest {
     @Test
     // Trying to fail the TypeDeserializer type detection
     public void shouldSerializeDeserializeNestedCollectionsAndMapAndTypedValuesCorrectly() throws Exception {
-        UUID uuid = UUID.randomUUID();
-        List myList = new ArrayList<>();
+        final UUID uuid = UUID.randomUUID();
+        final List myList = new ArrayList<>();
 
-        List myList2 = new ArrayList<>();
+        final List myList2 = new ArrayList<>();
         myList2.add(UUID.randomUUID());
         myList2.add(33L);
         myList2.add(84);
-        Map map2 = new HashMap<>();
+        final Map map2 = new HashMap<>();
         map2.put("eheh", UUID.randomUUID());
         map2.put("normal", "normal");
         myList2.add(map2);
 
-        Map<String, Object> map1 = new HashMap<>();
+        final Map<String, Object> map1 = new HashMap<>();
         map1.put("hello", "world");
         map1.put("test", uuid);
         map1.put("hehe", myList2);
@@ -265,25 +265,25 @@ public class GraphSONMapperV2d0PartialEmbeddedTypeTest {
 
     @Test
     public void shouldLooseTypesInfoWithGraphSONNoType() throws Exception {
-        ObjectMapper mapper = GraphSONMapper.build()
+        final ObjectMapper mapper = GraphSONMapper.build()
                 .version(GraphSONVersion.V2_0)
                 .typeInfo(TypeInfo.NO_TYPES)
                 .create()
                 .createMapper();
 
-        UUID uuid = UUID.randomUUID();
-        List myList = new ArrayList<>();
+        final UUID uuid = UUID.randomUUID();
+        final List myList = new ArrayList<>();
 
-        List myList2 = new ArrayList<>();
+        final List myList2 = new ArrayList<>();
         myList2.add(UUID.randomUUID());
         myList2.add(33L);
         myList2.add(84);
-        Map map2 = new HashMap<>();
+        final Map map2 = new HashMap<>();
         map2.put("eheh", UUID.randomUUID());
         map2.put("normal", "normal");
         myList2.add(map2);
 
-        Map<String, Object> map1 = new HashMap<>();
+        final Map<String, Object> map1 = new HashMap<>();
         map1.put("hello", "world");
         map1.put("test", uuid);
         map1.put("hehe", myList2);
@@ -292,8 +292,8 @@ public class GraphSONMapperV2d0PartialEmbeddedTypeTest {
         myList.add("kjkj");
         myList.add(UUID.randomUUID());
 
-        String json = mapper.writeValueAsString(myList);
-        Object read = mapper.readValue(json, Object.class);
+        final String json = mapper.writeValueAsString(myList);
+        final Object read = mapper.readValue(json, Object.class);
 
         // Not equals because of type loss
         assertNotEquals(myList, read);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java
index d0303eb..d846a69 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java
@@ -228,12 +228,9 @@ public abstract class AbstractGraphSONMessageSerializerV2d0 extends AbstractMess
 
             GraphSONUtil.writeStartObject(responseMessage, jsonGenerator, typeSerializer);
 
-            if (null == responseMessage.getResult().getData())
-            {
+            if (null == responseMessage.getResult().getData()){
                 jsonGenerator.writeNullField(SerTokens.TOKEN_DATA);
-            }
-            else
-            {
+            } else {
                 jsonGenerator.writeFieldName(SerTokens.TOKEN_DATA);
                 Object result = responseMessage.getResult().getData();
                 serializerProvider.findTypedValueSerializer(result.getClass(), true, null).serialize(result, jsonGenerator, serializerProvider);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV1d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV1d0.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV1d0.java
index 95907f9..c18aca7 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV1d0.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV1d0.java
@@ -269,22 +269,22 @@ public class GraphSONMessageSerializerGremlinTestV1d0 {
         assertEquals(1, deserializedMap.size());
 
         //check the first object and it's properties
-        Map<String,Object> vertex = deserializedMap.get("1").get("key");
-        Map<String,List<Map>> vertexProperties = (Map<String, List<Map>>)vertex.get("properties");
+        final Map<String,Object> vertex = deserializedMap.get("1").get("key");
+        final Map<String,List<Map>> vertexProperties = (Map<String, List<Map>>)vertex.get("properties");
         assertEquals(1, (int)vertex.get("id"));
         assertEquals("marko", vertexProperties.get("name").get(0).get("value"));
 
         //check objects tree structure
         //check Vertex property
-        Map<String, Map<String, Map>> subTreeMap =  deserializedMap.get("1").get("value");
-        Map<String, Map<String, Map>> subTreeMap2 = subTreeMap.get("2").get("value");
-        Map<String, String> vertexPropertiesDeep = subTreeMap2.get("3").get("key");
+        final Map<String, Map<String, Map>> subTreeMap =  deserializedMap.get("1").get("value");
+        final Map<String, Map<String, Map>> subTreeMap2 = subTreeMap.get("2").get("value");
+        final Map<String, String> vertexPropertiesDeep = subTreeMap2.get("3").get("key");
         assertEquals("vadas", vertexPropertiesDeep.get("value"));
         assertEquals("name", vertexPropertiesDeep.get("label"));
 
         // check subitem
-        Map<String,Object> vertex2 = subTreeMap.get("3").get("key");
-        Map<String,List<Map>> vertexProperties2 = (Map<String, List<Map>>)vertex2.get("properties");
+        final Map<String,Object> vertex2 = subTreeMap.get("3").get("key");
+        final Map<String,List<Map>> vertexProperties2 = (Map<String, List<Map>>)vertex2.get("properties");
 
         assertEquals("lop", vertexProperties2.get("name").get(0).get("value"));
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV2d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV2d0.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV2d0.java
index a7f8389..b85a45f 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV2d0.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinTestV2d0.java
@@ -57,11 +57,11 @@ import static org.junit.Assert.fail;
  */
 public class GraphSONMessageSerializerGremlinTestV2d0 {
 
-    private UUID requestId = UUID.fromString("6457272A-4018-4538-B9AE-08DD5DDC0AA1");
-    private ResponseMessage.Builder responseMessageBuilder = ResponseMessage.build(requestId);
-    private static ByteBufAllocator allocator = UnpooledByteBufAllocator.DEFAULT;
+    private final UUID requestId = UUID.fromString("6457272A-4018-4538-B9AE-08DD5DDC0AA1");
+    private final ResponseMessage.Builder responseMessageBuilder = ResponseMessage.build(requestId);
+    private final static ByteBufAllocator allocator = UnpooledByteBufAllocator.DEFAULT;
 
-    public MessageSerializer serializer = new GraphSONMessageSerializerGremlinV2d0();
+    public final MessageSerializer serializer = new GraphSONMessageSerializerGremlinV2d0();
 
     @Test
     public void shouldSerializeIterable() throws Exception {
@@ -272,11 +272,11 @@ public class GraphSONMessageSerializerGremlinTestV2d0 {
 
         //check the first object and its key's properties
         assertEquals(1, deserializedTree.size());
-        Vertex v = ((Vertex) deserializedTree.keySet().iterator().next());
+        final Vertex v = ((Vertex) deserializedTree.keySet().iterator().next());
         assertEquals(1, v.id());
         assertEquals("marko", v.property("name").value());
 
-        Tree firstTree = (Tree)deserializedTree.get(v);
+        final Tree firstTree = (Tree)deserializedTree.get(v);
         assertEquals(3, firstTree.size());
         Iterator<Vertex> vertexKeys = firstTree.keySet().iterator();
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV2d0.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV2d0.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV2d0.java
index 97c1cba..da9edb5 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV2d0.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV2d0.java
@@ -183,7 +183,7 @@ public final class TinkerIoRegistryV2d0 extends AbstractIoRegistry {
         }
 
         @Override
-        public TinkerGraph deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+        public TinkerGraph deserialize(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
             final TinkerGraph graph = TinkerGraph.open();
 
             final List<? extends Edge> edges;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f929db03/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphGraphSONSerializerV2d0Test.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphGraphSONSerializerV2d0Test.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphGraphSONSerializerV2d0Test.java
index 907aaed..9005233 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphGraphSONSerializerV2d0Test.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphGraphSONSerializerV2d0Test.java
@@ -54,17 +54,18 @@ import java.util.UUID;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 
 public class TinkerGraphGraphSONSerializerV2d0Test {
 
     // As of TinkerPop 3.2.1 default for GraphSON 2.0 means types enabled.
-    Mapper defaultMapperV2d0 = GraphSONMapper.build()
+    private final Mapper defaultMapperV2d0 = GraphSONMapper.build()
             .version(GraphSONVersion.V2_0)
             .addRegistry(TinkerIoRegistryV2d0.getInstance())
             .create();
 
-    Mapper noTypesMapperV2d0 = GraphSONMapper.build()
+    private final Mapper noTypesMapperV2d0 = GraphSONMapper.build()
             .version(GraphSONVersion.V2_0)
             .typeInfo(TypeInfo.NO_TYPES)
             .addRegistry(TinkerIoRegistryV2d0.getInstance())
@@ -75,14 +76,14 @@ public class TinkerGraphGraphSONSerializerV2d0Test {
      */
     @Test
     public void shouldDeserializeGraphSONIntoTinkerGraphWithPartialTypes() throws IOException {
-        GraphWriter writer = getWriter(defaultMapperV2d0);
-        GraphReader reader = getReader(defaultMapperV2d0);
-        TinkerGraph baseModern = TinkerFactory.createModern();
+        final GraphWriter writer = getWriter(defaultMapperV2d0);
+        final GraphReader reader = getReader(defaultMapperV2d0);
+        final  TinkerGraph baseModern = TinkerFactory.createModern();
 
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
             writer.writeGraph(out, baseModern);
-            String json = out.toString();
-            TinkerGraph read = TinkerGraph.open();
+            final String json = out.toString();
+            final TinkerGraph read = TinkerGraph.open();
             reader.readGraph(new ByteArrayInputStream(json.getBytes()), read);
             IoTest.assertModernGraph(read, true, false);
         }
@@ -93,14 +94,14 @@ public class TinkerGraphGraphSONSerializerV2d0Test {
      */
     @Test
     public void shouldDeserializeGraphSONIntoTinkerGraphWithoutTypes() throws IOException {
-        GraphWriter writer = getWriter(noTypesMapperV2d0);
-        GraphReader reader = getReader(noTypesMapperV2d0);
-        TinkerGraph baseModern = TinkerFactory.createModern();
+        final GraphWriter writer = getWriter(noTypesMapperV2d0);
+        final GraphReader reader = getReader(noTypesMapperV2d0);
+        final TinkerGraph baseModern = TinkerFactory.createModern();
 
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
             writer.writeGraph(out, baseModern);
-            String json = out.toString();
-            TinkerGraph read = TinkerGraph.open();
+            final String json = out.toString();
+            final TinkerGraph read = TinkerGraph.open();
             reader.readGraph(new ByteArrayInputStream(json.getBytes()), read);
             IoTest.assertModernGraph(read, true, false);
         }
@@ -111,20 +112,20 @@ public class TinkerGraphGraphSONSerializerV2d0Test {
      */
     @Test
     public void shouldDeserializeGraphSONIntoTinkerGraphKeepingTypes() throws IOException {
-        GraphWriter writer = getWriter(defaultMapperV2d0);
-        GraphReader reader = getReader(defaultMapperV2d0);
+        final GraphWriter writer = getWriter(defaultMapperV2d0);
+        final GraphReader reader = getReader(defaultMapperV2d0);
 
-        Graph sampleGraph1 = TinkerFactory.createModern();
-        Vertex v1 = sampleGraph1.addVertex(T.id, 100, "name", "kevin", "theUUID", UUID.randomUUID());
-        Vertex v2 = sampleGraph1.addVertex(T.id, 101L, "name", "henri", "theUUID", UUID.randomUUID());
+        final Graph sampleGraph1 = TinkerFactory.createModern();
+        final Vertex v1 = sampleGraph1.addVertex(T.id, 100, "name", "kevin", "theUUID", UUID.randomUUID());
+        final Vertex v2 = sampleGraph1.addVertex(T.id, 101L, "name", "henri", "theUUID", UUID.randomUUID());
         v1.addEdge("hello", v2, T.id, 101L,
                 "uuid", UUID.randomUUID());
 
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
             writer.writeObject(out, sampleGraph1);
-            String json = out.toString();
+            final String json = out.toString();
 
-            TinkerGraph read = reader.readObject(new ByteArrayInputStream(json.getBytes()), TinkerGraph.class);
+            final TinkerGraph read = reader.readObject(new ByteArrayInputStream(json.getBytes()), TinkerGraph.class);
             assertTrue(approximateGraphsCheck(sampleGraph1, read));
         }
     }
@@ -134,14 +135,14 @@ public class TinkerGraphGraphSONSerializerV2d0Test {
      */
     @Test
     public void shouldLooseTypesWithGraphSONNoTypesForVertexIds() throws IOException {
-        GraphWriter writer = getWriter(noTypesMapperV2d0);
-        GraphReader reader = getReader(noTypesMapperV2d0);
-        Graph sampleGraph1 = TinkerFactory.createModern();
+        final GraphWriter writer = getWriter(noTypesMapperV2d0);
+        final GraphReader reader = getReader(noTypesMapperV2d0);
+        final Graph sampleGraph1 = TinkerFactory.createModern();
         sampleGraph1.addVertex(T.id, 100L, "name", "kevin");
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
             writer.writeGraph(out, sampleGraph1);
-            String json = out.toString();
-            TinkerGraph read = TinkerGraph.open();
+            final String json = out.toString();
+            final TinkerGraph read = TinkerGraph.open();
             reader.readGraph(new ByteArrayInputStream(json.getBytes()), read);
             // Should fail on deserialized vertex Id.
             assertFalse(approximateGraphsCheck(sampleGraph1, read));
@@ -153,15 +154,15 @@ public class TinkerGraphGraphSONSerializerV2d0Test {
      */
     @Test
     public void shouldLooseTypesWithGraphSONNoTypesForVertexProps() throws IOException {
-        GraphWriter writer = getWriter(noTypesMapperV2d0);
-        GraphReader reader = getReader(noTypesMapperV2d0);
-        Graph sampleGraph1 = TinkerFactory.createModern();
+        final GraphWriter writer = getWriter(noTypesMapperV2d0);
+        final GraphReader reader = getReader(noTypesMapperV2d0);
+        final Graph sampleGraph1 = TinkerFactory.createModern();
 
         sampleGraph1.addVertex(T.id, 100, "name", "kevin", "uuid", UUID.randomUUID());
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
             writer.writeGraph(out, sampleGraph1);
-            String json = out.toString();
-            TinkerGraph read = TinkerGraph.open();
+            final String json = out.toString();
+            final TinkerGraph read = TinkerGraph.open();
             reader.readGraph(new ByteArrayInputStream(json.getBytes()), read);
             // Should fail on deserialized vertex prop.
             assertFalse(approximateGraphsCheck(sampleGraph1, read));
@@ -173,15 +174,15 @@ public class TinkerGraphGraphSONSerializerV2d0Test {
      */
     @Test
     public void shouldLooseTypesWithGraphSONNoTypesForEdgeIds() throws IOException {
-        GraphWriter writer = getWriter(noTypesMapperV2d0);
-        GraphReader reader = getReader(noTypesMapperV2d0);
-        Graph sampleGraph1 = TinkerFactory.createModern();
-        Vertex v1 = sampleGraph1.addVertex(T.id, 100, "name", "kevin");
+        final GraphWriter writer = getWriter(noTypesMapperV2d0);
+        final  GraphReader reader = getReader(noTypesMapperV2d0);
+        final Graph sampleGraph1 = TinkerFactory.createModern();
+        final  Vertex v1 = sampleGraph1.addVertex(T.id, 100, "name", "kevin");
         v1.addEdge("hello", sampleGraph1.traversal().V().has("name", "marko").next(), T.id, 101L);
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
             writer.writeGraph(out, sampleGraph1);
-            String json = out.toString();
-            TinkerGraph read = TinkerGraph.open();
+            final String json = out.toString();
+            final TinkerGraph read = TinkerGraph.open();
             reader.readGraph(new ByteArrayInputStream(json.getBytes()), read);
             // Should fail on deserialized edge Id.
             assertFalse(approximateGraphsCheck(sampleGraph1, read));
@@ -193,17 +194,17 @@ public class TinkerGraphGraphSONSerializerV2d0Test {
      */
     @Test
     public void shouldLooseTypesWithGraphSONNoTypesForEdgeProps() throws IOException {
-        GraphWriter writer = getWriter(noTypesMapperV2d0);
-        GraphReader reader = getReader(noTypesMapperV2d0);
-        Graph sampleGraph1 = TinkerFactory.createModern();
+        final GraphWriter writer = getWriter(noTypesMapperV2d0);
+        final GraphReader reader = getReader(noTypesMapperV2d0);
+        final Graph sampleGraph1 = TinkerFactory.createModern();
 
-        Vertex v1 = sampleGraph1.addVertex(T.id, 100, "name", "kevin");
+        final Vertex v1 = sampleGraph1.addVertex(T.id, 100, "name", "kevin");
         v1.addEdge("hello", sampleGraph1.traversal().V().has("name", "marko").next(), T.id, 101,
                 "uuid", UUID.randomUUID());
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
             writer.writeGraph(out, sampleGraph1);
-            String json = out.toString();
-            TinkerGraph read = TinkerGraph.open();
+            final String json = out.toString();
+            final TinkerGraph read = TinkerGraph.open();
             reader.readGraph(new ByteArrayInputStream(json.getBytes()), read);
             // Should fail on deserialized edge prop.
             assertFalse(approximateGraphsCheck(sampleGraph1, read));
@@ -216,13 +217,13 @@ public class TinkerGraphGraphSONSerializerV2d0Test {
      */
     @Test
     public void shouldKeepTypesWhenDeserializingSerializedTinkerGraph() throws IOException {
-        TinkerGraph tg = TinkerGraph.open();
+        final TinkerGraph tg = TinkerGraph.open();
 
-        Vertex v = tg.addVertex("vertexTest");
-        UUID uuidProp = UUID.randomUUID();
-        Duration durationProp = Duration.ofHours(3);
-        Long longProp = 2L;
-        ByteBuffer byteBufferProp = ByteBuffer.wrap("testbb".getBytes());
+        final Vertex v = tg.addVertex("vertexTest");
+        final UUID uuidProp = UUID.randomUUID();
+        final Duration durationProp = Duration.ofHours(3);
+        final Long longProp = 2L;
+        final ByteBuffer byteBufferProp = ByteBuffer.wrap("testbb".getBytes());
 
         // One Java util type natively supported by Jackson
         v.property("uuid", uuidProp);
@@ -233,14 +234,14 @@ public class TinkerGraphGraphSONSerializerV2d0Test {
         // One Java util type added by GraphSON
         v.property("bytebuffer", byteBufferProp);
 
-        GraphWriter writer = getWriter(defaultMapperV2d0);
-        GraphReader reader = getReader(defaultMapperV2d0);
+        final GraphWriter writer = getWriter(defaultMapperV2d0);
+        final GraphReader reader = getReader(defaultMapperV2d0);
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
             writer.writeGraph(out, tg);
-            String json = out.toString();
-            TinkerGraph read = TinkerGraph.open();
+            final String json = out.toString();
+            final TinkerGraph read = TinkerGraph.open();
             reader.readGraph(new ByteArrayInputStream(json.getBytes()), read);
-            Vertex vRead = read.traversal().V().hasLabel("vertexTest").next();
+            final Vertex vRead = read.traversal().V().hasLabel("vertexTest").next();
             assertEquals(vRead.property("uuid").value(), uuidProp);
             assertEquals(vRead.property("duration").value(), durationProp);
             assertEquals(vRead.property("long").value(), longProp);
@@ -251,233 +252,241 @@ public class TinkerGraphGraphSONSerializerV2d0Test {
 
     @Test
     public void deserializersTestsVertex() {
-        TinkerGraph tg = TinkerGraph.open();
+        final TinkerGraph tg = TinkerGraph.open();
 
-        Vertex v = tg.addVertex("vertexTest");
+        final Vertex v = tg.addVertex("vertexTest");
         v.property("born", LocalDateTime.of(1971, 1, 2, 20, 50));
         v.property("dead", LocalDateTime.of(1971, 1, 7, 20, 50));
 
-        GraphWriter writer = getWriter(defaultMapperV2d0);
-        GraphReader reader = getReader(defaultMapperV2d0);
+        final GraphWriter writer = getWriter(defaultMapperV2d0);
+        final GraphReader reader = getReader(defaultMapperV2d0);
 
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
             writer.writeObject(out, v);
-            String json = out.toString();
+            final String json = out.toString();
 
             // Object works, because there's a type in the payload now
             // Vertex.class would work as well
             // Anything else would not because we check the type in param here with what's in the JSON, for safety.
-            Vertex vRead = (Vertex)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+            final Vertex vRead = (Vertex)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
             assertEquals(v, vRead);
         } catch (IOException e) {
             e.printStackTrace();
+            fail("Should not have thrown exception: " + e.getMessage());
         }
     }
 
     @Test
     public void deserializersTestsEdge() {
-        TinkerGraph tg = TinkerGraph.open();
+        final TinkerGraph tg = TinkerGraph.open();
 
-        Vertex v = tg.addVertex("vertexTest");
-        Vertex v2 = tg.addVertex("vertexTest");
+        final Vertex v = tg.addVertex("vertexTest");
+        final Vertex v2 = tg.addVertex("vertexTest");
 
-        Edge ed = v.addEdge("knows", v2, "time", LocalDateTime.now());
+        final Edge ed = v.addEdge("knows", v2, "time", LocalDateTime.now());
 
-        GraphWriter writer = getWriter(defaultMapperV2d0);
-        GraphReader reader = getReader(defaultMapperV2d0);
+        final GraphWriter writer = getWriter(defaultMapperV2d0);
+        final GraphReader reader = getReader(defaultMapperV2d0);
 
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
             writer.writeObject(out, ed);
-            String json = out.toString();
+            final String json = out.toString();
 
             // Object works, because there's a type in the payload now
             // Edge.class would work as well
             // Anything else would not because we check the type in param here with what's in the JSON, for safety.
-            Edge eRead = (Edge)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+            final Edge eRead = (Edge)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
             assertEquals(ed, eRead);
         } catch (IOException e) {
             e.printStackTrace();
+            fail("Should not have thrown exception: " + e.getMessage());
         }
     }
 
     @Test
     public void deserializersTestsTinkerGraph() {
-        TinkerGraph tg = TinkerGraph.open();
+        final TinkerGraph tg = TinkerGraph.open();
 
-        Vertex v = tg.addVertex("vertexTest");
-        Vertex v2 = tg.addVertex("vertexTest");
+        final Vertex v = tg.addVertex("vertexTest");
+        final Vertex v2 = tg.addVertex("vertexTest");
 
-        Edge ed = v.addEdge("knows", v2);
+        v.addEdge("knows", v2);
 
-        GraphWriter writer = getWriter(defaultMapperV2d0);
-        GraphReader reader = getReader(defaultMapperV2d0);
+        final GraphWriter writer = getWriter(defaultMapperV2d0);
+        final GraphReader reader = getReader(defaultMapperV2d0);
 
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
             writer.writeObject(out, tg);
-            String json = out.toString();
+            final String json = out.toString();
 
-            Graph gRead = (Graph)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+            final Graph gRead = (Graph)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
             assertTrue(approximateGraphsCheck(tg, gRead));
         } catch (IOException e) {
             e.printStackTrace();
+            fail("Should not have thrown exception: " + e.getMessage());
         }
     }
 
     @Test
     public void deserializersTestsProperty() {
-        TinkerGraph tg = TinkerGraph.open();
+        final TinkerGraph tg = TinkerGraph.open();
 
-        Vertex v = tg.addVertex("vertexTest");
-        Vertex v2 = tg.addVertex("vertexTest");
+        final Vertex v = tg.addVertex("vertexTest");
+        final Vertex v2 = tg.addVertex("vertexTest");
 
-        Edge ed = v.addEdge("knows", v2);
+        final Edge ed = v.addEdge("knows", v2);
 
-        GraphWriter writer = getWriter(defaultMapperV2d0);
-        GraphReader reader = getReader(defaultMapperV2d0);
+        final GraphWriter writer = getWriter(defaultMapperV2d0);
+        final GraphReader reader = getReader(defaultMapperV2d0);
 
-        Property prop = ed.property("since", Year.parse("1993"));
+        final Property prop = ed.property("since", Year.parse("1993"));
 
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
             writer.writeObject(out, prop);
-            String json = out.toString();
+            final String json = out.toString();
 
-            Property pRead = (Property)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+            final Property pRead = (Property)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
             //can't use equals here, because pRead is detached, its parent element has not been intentionally
             //serialized and "equals()" checks that.
             assertTrue(prop.key().equals(pRead.key()) && prop.value().equals(pRead.value()));
         } catch (IOException e) {
             e.printStackTrace();
+            fail("Should not have thrown exception: " + e.getMessage());
         }
     }
 
     @Test
     public void deserializersTestsVertexProperty() {
-        TinkerGraph tg = TinkerGraph.open();
+        final TinkerGraph tg = TinkerGraph.open();
 
-        Vertex v = tg.addVertex("vertexTest");
+        final Vertex v = tg.addVertex("vertexTest");
 
-        GraphWriter writer = getWriter(defaultMapperV2d0);
-        GraphReader reader = getReader(defaultMapperV2d0);
+        final GraphWriter writer = getWriter(defaultMapperV2d0);
+        final GraphReader reader = getReader(defaultMapperV2d0);
 
-        VertexProperty prop = v.property("born", LocalDateTime.of(1971, 1, 2, 20, 50));
+        final VertexProperty prop = v.property("born", LocalDateTime.of(1971, 1, 2, 20, 50));
 
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
             writer.writeObject(out, prop);
-            String json = out.toString();
+            final String json = out.toString();
 
-            VertexProperty vPropRead = (VertexProperty)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+            final VertexProperty vPropRead = (VertexProperty)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
             //only classes and ids are checked, that's ok, full vertex property ser/de
             //is checked elsewhere.
             assertEquals(prop, vPropRead);
         } catch (IOException e) {
             e.printStackTrace();
+            fail("Should not have thrown exception: " + e.getMessage());
         }
     }
 
     @Test
     public void deserializersTestsPath() {
-        TinkerGraph tg = TinkerFactory.createModern();
+        final TinkerGraph tg = TinkerFactory.createModern();
 
-        GraphWriter writer = getWriter(defaultMapperV2d0);
-        GraphReader reader = getReader(defaultMapperV2d0);
+        final GraphWriter writer = getWriter(defaultMapperV2d0);
+        final GraphReader reader = getReader(defaultMapperV2d0);
 
-        Path p = tg.traversal().V(1).as("a").has("name").as("b").
+        final Path p = tg.traversal().V(1).as("a").has("name").as("b").
                 out("knows").out("created").as("c").
                 has("name", "ripple").values("name").as("d").
                 identity().as("e").path().next();
 
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
             writer.writeObject(out, p);
-            String json = out.toString();
+            final String json = out.toString();
 
-            Path pathRead = (Path)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+            final Path pathRead = (Path)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
 
             for (int i = 0; i < p.objects().size(); i++) {
-                Object o = p.objects().get(i);
-                Object oRead = pathRead.objects().get(i);
+                final Object o = p.objects().get(i);
+                final Object oRead = pathRead.objects().get(i);
                 assertEquals(o, oRead);
             }
             for (int i = 0; i < p.labels().size(); i++) {
-                Set<String> o = p.labels().get(i);
-                Set<String> oRead = pathRead.labels().get(i);
+                final Set<String> o = p.labels().get(i);
+                final Set<String> oRead = pathRead.labels().get(i);
                 assertEquals(o, oRead);
             }
         } catch (IOException e) {
             e.printStackTrace();
+            fail("Should not have thrown exception: " + e.getMessage());
         }
     }
 
     @Test
     public void deserializersTestsMetrics() {
-        TinkerGraph tg = TinkerFactory.createModern();
+        final TinkerGraph tg = TinkerFactory.createModern();
 
-        GraphWriter writer = getWriter(defaultMapperV2d0);
-        GraphReader reader = getReader(defaultMapperV2d0);
+        final GraphWriter writer = getWriter(defaultMapperV2d0);
+        final GraphReader reader = getReader(defaultMapperV2d0);
 
-        TraversalMetrics tm = tg.traversal().V(1).as("a").has("name").as("b").
+        final TraversalMetrics tm = tg.traversal().V(1).as("a").has("name").as("b").
                 out("knows").out("created").as("c").
                 has("name", "ripple").values("name").as("d").
                 identity().as("e").profile().next();
 
-        MutableMetrics m = new MutableMetrics(tm.getMetrics(0));
+        final MutableMetrics m = new MutableMetrics(tm.getMetrics(0));
         // making sure nested metrics are included in serde
         m.addNested(new MutableMetrics(tm.getMetrics(1)));
 
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
             writer.writeObject(out, m);
-            String json = out.toString();
+            final String json = out.toString();
 
-            Metrics metricsRead = (Metrics)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+            final Metrics metricsRead = (Metrics)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
             // toString should be enough to compare Metrics
             assertTrue(m.toString().equals(metricsRead.toString()));
         } catch (IOException e) {
             e.printStackTrace();
+            fail("Should not have thrown exception: " + e.getMessage());
         }
     }
 
     @Test
     public void deserializersTestsTraversalMetrics() {
-        TinkerGraph tg = TinkerFactory.createModern();
+        final TinkerGraph tg = TinkerFactory.createModern();
 
-        GraphWriter writer = getWriter(defaultMapperV2d0);
-        GraphReader reader = getReader(defaultMapperV2d0);
+        final GraphWriter writer = getWriter(defaultMapperV2d0);
+        final GraphReader reader = getReader(defaultMapperV2d0);
 
-        TraversalMetrics tm = tg.traversal().V(1).as("a").has("name").as("b").
+        final TraversalMetrics tm = tg.traversal().V(1).as("a").has("name").as("b").
                 out("knows").out("created").as("c").
                 has("name", "ripple").values("name").as("d").
                 identity().as("e").profile().next();
 
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
             writer.writeObject(out, tm);
-            String json = out.toString();
+            final String json = out.toString();
 
-            TraversalMetrics traversalMetricsRead = (TraversalMetrics)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
+            final TraversalMetrics traversalMetricsRead = (TraversalMetrics)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
             // toString should be enough to compare TraversalMetrics
             assertTrue(tm.toString().equals(traversalMetricsRead.toString()));
         } catch (IOException e) {
             e.printStackTrace();
+            fail("Should not have thrown exception: " + e.getMessage());
         }
     }
 
     @Test
     public void deserializersTree() {
-        TinkerGraph tg = TinkerFactory.createModern();
+        final TinkerGraph tg = TinkerFactory.createModern();
 
-        GraphWriter writer = getWriter(noTypesMapperV2d0);
-        GraphReader reader = getReader(noTypesMapperV2d0);
+        final GraphWriter writer = getWriter(noTypesMapperV2d0);
+        final GraphReader reader = getReader(noTypesMapperV2d0);
 
-        Tree t = tg.traversal().V().out().out().tree().next();
+        final Tree t = tg.traversal().V().out().out().tree().next();
 
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
-            Vertex v = tg.traversal().V(1).next();
+            final Vertex v = tg.traversal().V(1).next();
                      v.property("myUUIDprop", UUID.randomUUID());
             writer.writeObject(out, v);
 
 
 //            writer.writeObject(out, t);
-            String json = out.toString();
+            final String json = out.toString();
 
-            System.out.println("json = " + json);
+            //System.out.println("json = " + json);
 
 //            Tree treeRead = (Tree)reader.readObject(new ByteArrayInputStream(json.getBytes()), Object.class);
             //Map's equals should check each component of the tree recursively
@@ -485,10 +494,9 @@ public class TinkerGraphGraphSONSerializerV2d0Test {
             //is ok. Complete vertex deser is checked elsewhere.
 //            assertEquals(t, treeRead);
 
-
-
         } catch (IOException e) {
             e.printStackTrace();
+            fail("Should not have thrown exception: " + e.getMessage());
         }
     }
 
@@ -501,28 +509,28 @@ public class TinkerGraphGraphSONSerializerV2d0Test {
     }
 
     /**
-     * Checks sequentially vertices and egdes of both graphs. Will check sequentially Vertex IDs, Vertex Properties IDs
+     * Checks sequentially vertices and edges of both graphs. Will check sequentially Vertex IDs, Vertex Properties IDs
      * and values and classes. Then same for edges. To use when serializing a Graph and deserializing the supposedly
      * same Graph.
      */
     private boolean approximateGraphsCheck(Graph g1, Graph g2) {
-        Iterator<Vertex> itV = g1.vertices();
-        Iterator<Vertex> itVRead = g2.vertices();
+        final Iterator<Vertex> itV = g1.vertices();
+        final Iterator<Vertex> itVRead = g2.vertices();
 
         while (itV.hasNext()) {
-            Vertex v = itV.next();
-            Vertex vRead = itVRead.next();
+            final Vertex v = itV.next();
+            final Vertex vRead = itVRead.next();
 
             // Will only check IDs but that's 'good' enough.
             if (!v.equals(vRead)) {
                 return false;
             }
 
-            Iterator itVP = v.properties();
-            Iterator itVPRead = vRead.properties();
+            final Iterator itVP = v.properties();
+            final Iterator itVPRead = vRead.properties();
             while (itVP.hasNext()) {
-                VertexProperty vp = (VertexProperty) itVP.next();
-                VertexProperty vpRead = (VertexProperty) itVPRead.next();
+                final VertexProperty vp = (VertexProperty) itVP.next();
+                final VertexProperty vpRead = (VertexProperty) itVPRead.next();
                 if (!vp.value().equals(vpRead.value())
                         || !vp.equals(vpRead)) {
                     return false;
@@ -530,22 +538,22 @@ public class TinkerGraphGraphSONSerializerV2d0Test {
             }
         }
 
-        Iterator<Edge> itE = g1.edges();
-        Iterator<Edge> itERead = g2.edges();
+        final Iterator<Edge> itE = g1.edges();
+        final Iterator<Edge> itERead = g2.edges();
 
         while (itE.hasNext()) {
-            Edge e = itE.next();
-            Edge eRead = itERead.next();
+            final Edge e = itE.next();
+            final Edge eRead = itERead.next();
             // Will only check IDs but that's good enough.
             if (!e.equals(eRead)) {
                 return false;
             }
 
-            Iterator itEP = e.properties();
-            Iterator itEPRead = eRead.properties();
+            final Iterator itEP = e.properties();
+            final Iterator itEPRead = eRead.properties();
             while (itEP.hasNext()) {
-                Property ep = (Property) itEP.next();
-                Property epRead = (Property) itEPRead.next();
+                final Property ep = (Property) itEP.next();
+                final Property epRead = (Property) itEPRead.next();
                 if (!ep.value().equals(epRead.value())
                         || !ep.equals(epRead)) {
                     return false;


[02/19] tinkerpop git commit: TINKERPOP-1274: GraphSON 2.0.

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/115eb3c7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead.json
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead.json
index cf01395..92c4d84 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead.json
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/grateful-dead.json
@@ -1,257 +1,257 @@
 {"id":1,"label":"song","inE":{"followedBy":[{"id":3059,"outV":153,"properties":{"weight":1}},{"id":276,"outV":5,"properties":{"weight":2}},{"id":3704,"outV":3,"properties":{"weight":2}},{"id":4383,"outV":62,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":0,"inV":2,"properties":{"weight":1}},{"id":1,"inV":3,"properties":{"weight":2}},{"id":2,"inV":4,"properties":{"weight":1}},{"id":3,"inV":5,"properties":{"weight":1}},{"id":4,"inV":6,"properties":{"weight":1}}],"sungBy":[{"id":7612,"inV":340}],"writtenBy":[{"id":7611,"inV":527}]},"properties":{"name":[{"id":0,"value":"HEY BO DIDDLEY"}],"songType":[{"id":2,"value":"cover"}],"performances":[{"id":1,"value":5}]}}
 {"id":2,"label":"song","inE":{"followedBy":[{"id":0,"outV":1,"properties":{"weight":1}},{"id":323,"outV":34,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":6190,"inV":123,"properties":{"weight":1}},{"id":6191,"inV":50,"properties":{"weight":1}}],"sungBy":[{"id":7666,"inV":525}],"writtenBy":[{"id":7665,"inV":525}]},"properties":{"name":[{"id":3,"value":"IM A MAN"}],"songType":[{"id":5,"value":"cover"}],"performances":[{"id":4,"value":1}]}}
-{"id":3,"label":"song","inE":{"followedBy":[{"id":1,"outV":1,"properties":{"weight":2}},{"id":2051,"outV":92,"properties":{"weight":4}},{"id":1412,"outV":83,"properties":{"weight":6}},{"id":6669,"outV":12,"properties":{"weight":1}},{"id":1166,"outV":26,"properties":{"weight":4}},{"id":6286,"outV":49,"properties":{"weight":1}},{"id":910,"outV":91,"properties":{"weight":3}},{"id":526,"outV":120,"properties":{"weight":2}},{"id":273,"outV":5,"properties":{"weight":40}},{"id":2194,"outV":235,"properties":{"weight":1}},{"id":1684,"outV":124,"properties":{"weight":1}},{"id":3221,"outV":63,"properties":{"weight":1}},{"id":1941,"outV":148,"properties":{"weight":4}},{"id":2712,"outV":13,"properties":{"weight":3}},{"id":6425,"outV":134,"properties":{"weight":2}},{"id":5787,"outV":76,"properties":{"weight":2}},{"id":5148,"outV":125,"properties":{"weight":4}},{"id":6692,"outV":141,"properties":{"weight":2}},{"id":6310,"outV":123,"properties":{"weight":1}},{"id":6448,"outV":187,"properties":{"wei
 ght":3}},{"id":2225,"outV":226,"properties":{"weight":1}},{"id":5042,"outV":209,"properties":{"weight":1}},{"id":4789,"outV":114,"properties":{"weight":2}},{"id":1464,"outV":81,"properties":{"weight":1}},{"id":2232,"outV":215,"properties":{"weight":1}},{"id":4665,"outV":154,"properties":{"weight":1}},{"id":2235,"outV":29,"properties":{"weight":163}},{"id":6208,"outV":319,"properties":{"weight":4}},{"id":706,"outV":206,"properties":{"weight":2}},{"id":835,"outV":171,"properties":{"weight":1}},{"id":5188,"outV":99,"properties":{"weight":1}},{"id":1862,"outV":94,"properties":{"weight":10}},{"id":6343,"outV":21,"properties":{"weight":1}},{"id":1735,"outV":82,"properties":{"weight":1}},{"id":4937,"outV":277,"properties":{"weight":1}},{"id":3276,"outV":160,"properties":{"weight":1}},{"id":3149,"outV":104,"properties":{"weight":1}},{"id":1358,"outV":130,"properties":{"weight":18}},{"id":4304,"outV":110,"properties":{"weight":1}},{"id":1105,"outV":59,"properties":{"weight":1}},{"id":722,"ou
 tV":80,"properties":{"weight":1}},{"id":4182,"outV":54,"properties":{"weight":1}},{"id":1499,"outV":164,"properties":{"weight":2}},{"id":2397,"outV":179,"properties":{"weight":1}},{"id":6623,"outV":127,"properties":{"weight":3}},{"id":351,"outV":178,"properties":{"weight":1}},{"id":2018,"outV":149,"properties":{"weight":1}},{"id":7011,"outV":89,"properties":{"weight":2}},{"id":5348,"outV":165,"properties":{"weight":1}},{"id":2278,"outV":25,"properties":{"weight":7}},{"id":1255,"outV":27,"properties":{"weight":2}},{"id":3048,"outV":153,"properties":{"weight":13}},{"id":5867,"outV":96,"properties":{"weight":116}},{"id":364,"outV":74,"properties":{"weight":2}},{"id":492,"outV":98,"properties":{"weight":1}},{"id":3948,"outV":138,"properties":{"weight":4}},{"id":4335,"outV":62,"properties":{"weight":1}},{"id":3312,"outV":252,"properties":{"weight":1}},{"id":5745,"outV":129,"properties":{"weight":1}},{"id":4596,"outV":85,"properties":{"weight":3}},{"id":5367,"outV":132,"properties":{"weig
 ht":1}},{"id":633,"outV":23,"properties":{"weight":1}},{"id":891,"outV":140,"properties":{"weight":2}},{"id":5375,"outV":69,"properties":{"weight":1}},{"id":6143,"outV":289,"properties":{"weight":3}}]},"outE":{"followedBy":[{"id":3712,"inV":27,"properties":{"weight":1}},{"id":3713,"inV":110,"properties":{"weight":4}},{"id":3714,"inV":215,"properties":{"weight":4}},{"id":3715,"inV":127,"properties":{"weight":10}},{"id":3716,"inV":83,"properties":{"weight":3}},{"id":3717,"inV":103,"properties":{"weight":2}},{"id":3718,"inV":68,"properties":{"weight":1}},{"id":3719,"inV":134,"properties":{"weight":2}},{"id":3720,"inV":25,"properties":{"weight":10}},{"id":3721,"inV":125,"properties":{"weight":54}},{"id":3722,"inV":130,"properties":{"weight":26}},{"id":3723,"inV":141,"properties":{"weight":2}},{"id":3724,"inV":145,"properties":{"weight":1}},{"id":3725,"inV":319,"properties":{"weight":3}},{"id":3726,"inV":12,"properties":{"weight":1}},{"id":3727,"inV":160,"properties":{"weight":37}},{"id"
 :3728,"inV":70,"properties":{"weight":2}},{"id":3729,"inV":123,"properties":{"weight":1}},{"id":3730,"inV":129,"properties":{"weight":1}},{"id":3731,"inV":30,"properties":{"weight":2}},{"id":3732,"inV":148,"properties":{"weight":1}},{"id":3733,"inV":211,"properties":{"weight":3}},{"id":3734,"inV":87,"properties":{"weight":13}},{"id":3735,"inV":164,"properties":{"weight":4}},{"id":3736,"inV":64,"properties":{"weight":2}},{"id":3737,"inV":320,"properties":{"weight":1}},{"id":3738,"inV":61,"properties":{"weight":3}},{"id":3739,"inV":210,"properties":{"weight":3}},{"id":3740,"inV":50,"properties":{"weight":7}},{"id":3741,"inV":128,"properties":{"weight":3}},{"id":3742,"inV":315,"properties":{"weight":1}},{"id":3743,"inV":261,"properties":{"weight":1}},{"id":3744,"inV":213,"properties":{"weight":13}},{"id":3745,"inV":72,"properties":{"weight":1}},{"id":3746,"inV":38,"properties":{"weight":4}},{"id":3747,"inV":204,"properties":{"weight":14}},{"id":3748,"inV":62,"properties":{"weight":2}},
 {"id":3749,"inV":150,"properties":{"weight":8}},{"id":3750,"inV":309,"properties":{"weight":1}},{"id":3751,"inV":131,"properties":{"weight":1}},{"id":3752,"inV":151,"properties":{"weight":1}},{"id":3753,"inV":321,"properties":{"weight":1}},{"id":3754,"inV":90,"properties":{"weight":2}},{"id":3755,"inV":82,"properties":{"weight":1}},{"id":3756,"inV":120,"properties":{"weight":1}},{"id":3757,"inV":46,"properties":{"weight":5}},{"id":3758,"inV":157,"properties":{"weight":5}},{"id":3759,"inV":59,"properties":{"weight":1}},{"id":3760,"inV":81,"properties":{"weight":1}},{"id":3761,"inV":86,"properties":{"weight":5}},{"id":3762,"inV":140,"properties":{"weight":1}},{"id":3763,"inV":201,"properties":{"weight":1}},{"id":3764,"inV":214,"properties":{"weight":1}},{"id":3765,"inV":185,"properties":{"weight":2}},{"id":3766,"inV":216,"properties":{"weight":1}},{"id":3767,"inV":217,"properties":{"weight":2}},{"id":3768,"inV":236,"properties":{"weight":5}},{"id":3769,"inV":193,"properties":{"weight"
 :1}},{"id":3770,"inV":79,"properties":{"weight":2}},{"id":3771,"inV":84,"properties":{"weight":1}},{"id":3772,"inV":23,"properties":{"weight":2}},{"id":3773,"inV":31,"properties":{"weight":2}},{"id":3774,"inV":240,"properties":{"weight":1}},{"id":3775,"inV":292,"properties":{"weight":1}},{"id":3776,"inV":9,"properties":{"weight":1}},{"id":3777,"inV":259,"properties":{"weight":1}},{"id":3694,"inV":5,"properties":{"weight":57}},{"id":3695,"inV":114,"properties":{"weight":30}},{"id":3696,"inV":74,"properties":{"weight":2}},{"id":3697,"inV":78,"properties":{"weight":3}},{"id":3698,"inV":10,"properties":{"weight":1}},{"id":3699,"inV":26,"properties":{"weight":4}},{"id":3700,"inV":153,"properties":{"weight":7}},{"id":3701,"inV":4,"properties":{"weight":4}},{"id":3702,"inV":317,"properties":{"weight":1}},{"id":3703,"inV":13,"properties":{"weight":5}},{"id":3704,"inV":1,"properties":{"weight":2}},{"id":3705,"inV":21,"properties":{"weight":2}},{"id":3706,"inV":57,"properties":{"weight":2}},{
 "id":3707,"inV":122,"properties":{"weight":2}},{"id":3708,"inV":318,"properties":{"weight":1}},{"id":3709,"inV":94,"properties":{"weight":26}},{"id":3710,"inV":96,"properties":{"weight":7}},{"id":3711,"inV":124,"properties":{"weight":15}}],"sungBy":[{"id":7808,"inV":351}],"writtenBy":[{"id":7807,"inV":671}]},"properties":{"name":[{"id":6,"value":"NOT FADE AWAY"}],"songType":[{"id":8,"value":"cover"}],"performances":[{"id":7,"value":531}]}}
-{"id":4,"label":"song","inE":{"followedBy":[{"id":128,"outV":97,"properties":{"weight":1}},{"id":1664,"outV":267,"properties":{"weight":1}},{"id":2,"outV":1,"properties":{"weight":1}},{"id":4099,"outV":48,"properties":{"weight":1}},{"id":1667,"outV":124,"properties":{"weight":15}},{"id":899,"outV":140,"properties":{"weight":1}},{"id":1156,"outV":26,"properties":{"weight":16}},{"id":773,"outV":122,"properties":{"weight":9}},{"id":6534,"outV":242,"properties":{"weight":1}},{"id":6664,"outV":12,"properties":{"weight":3}},{"id":1032,"outV":73,"properties":{"weight":1}},{"id":5129,"outV":222,"properties":{"weight":1}},{"id":5387,"outV":69,"properties":{"weight":1}},{"id":5517,"outV":43,"properties":{"weight":2}},{"id":5006,"outV":30,"properties":{"weight":2}},{"id":6030,"outV":204,"properties":{"weight":2}},{"id":2063,"outV":92,"properties":{"weight":1}},{"id":915,"outV":91,"properties":{"weight":2}},{"id":6940,"outV":84,"properties":{"weight":5}},{"id":2464,"outV":68,"properties":{"weig
 ht":1}},{"id":5795,"outV":76,"properties":{"weight":2}},{"id":3620,"outV":24,"properties":{"weight":2}},{"id":4772,"outV":114,"properties":{"weight":25}},{"id":2982,"outV":14,"properties":{"weight":3}},{"id":3367,"outV":184,"properties":{"weight":6}},{"id":2345,"outV":87,"properties":{"weight":2}},{"id":2861,"outV":101,"properties":{"weight":6}},{"id":1840,"outV":275,"properties":{"weight":1}},{"id":5425,"outV":102,"properties":{"weight":1}},{"id":180,"outV":70,"properties":{"weight":46}},{"id":2613,"outV":158,"properties":{"weight":1}},{"id":5562,"outV":162,"properties":{"weight":2}},{"id":5434,"outV":217,"properties":{"weight":1}},{"id":1469,"outV":81,"properties":{"weight":1}},{"id":446,"outV":38,"properties":{"weight":7}},{"id":2494,"outV":90,"properties":{"weight":3}},{"id":3266,"outV":160,"properties":{"weight":10}},{"id":326,"outV":34,"properties":{"weight":1}},{"id":6855,"outV":64,"properties":{"weight":12}},{"id":583,"outV":120,"properties":{"weight":2}},{"id":73,"outV":46,
 "properties":{"weight":4}},{"id":4425,"outV":212,"properties":{"weight":1}},{"id":4941,"outV":86,"properties":{"weight":2}},{"id":1613,"outV":210,"properties":{"weight":2}},{"id":6350,"outV":21,"properties":{"weight":1}},{"id":3535,"outV":201,"properties":{"weight":1}},{"id":980,"outV":11,"properties":{"weight":3}},{"id":5206,"outV":99,"properties":{"weight":1}},{"id":1494,"outV":164,"properties":{"weight":3}},{"id":5847,"outV":61,"properties":{"weight":2}},{"id":6490,"outV":187,"properties":{"weight":1}},{"id":2781,"outV":15,"properties":{"weight":4}},{"id":5600,"outV":42,"properties":{"weight":1}},{"id":353,"outV":74,"properties":{"weight":6}},{"id":5474,"outV":79,"properties":{"weight":1}},{"id":3811,"outV":88,"properties":{"weight":2}},{"id":1891,"outV":103,"properties":{"weight":19}},{"id":5989,"outV":50,"properties":{"weight":12}},{"id":4327,"outV":110,"properties":{"weight":2}},{"id":2538,"outV":57,"properties":{"weight":4}},{"id":3050,"outV":153,"properties":{"weight":13}},{
 "id":4970,"outV":236,"properties":{"weight":1}},{"id":2283,"outV":25,"properties":{"weight":9}},{"id":236,"outV":145,"properties":{"weight":1}},{"id":6126,"outV":72,"properties":{"weight":2}},{"id":5232,"outV":214,"properties":{"weight":2}},{"id":4594,"outV":85,"properties":{"weight":1}},{"id":4084,"outV":109,"properties":{"weight":1}},{"id":1652,"outV":213,"properties":{"weight":3}},{"id":3701,"outV":3,"properties":{"weight":4}},{"id":5621,"outV":22,"properties":{"weight":1}},{"id":629,"outV":23,"properties":{"weight":10}},{"id":7029,"outV":89,"properties":{"weight":1}},{"id":5238,"outV":32,"properties":{"weight":3}},{"id":2684,"outV":13,"properties":{"weight":9}},{"id":3325,"outV":268,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":5120,"inV":40,"properties":{"weight":5}},{"id":5121,"inV":33,"properties":{"weight":3}},{"id":5122,"inV":79,"properties":{"weight":1}},{"id":5123,"inV":292,"properties":{"weight":1}},{"id":5071,"inV":50,"properties":{"weight":9}},{"id":5072,"in
 V":12,"properties":{"weight":26}},{"id":5073,"inV":18,"properties":{"weight":4}},{"id":5074,"inV":24,"properties":{"weight":9}},{"id":5075,"inV":23,"properties":{"weight":63}},{"id":5076,"inV":13,"properties":{"weight":12}},{"id":5077,"inV":10,"properties":{"weight":4}},{"id":5078,"inV":11,"properties":{"weight":3}},{"id":5079,"inV":26,"properties":{"weight":18}},{"id":5080,"inV":22,"properties":{"weight":1}},{"id":5081,"inV":16,"properties":{"weight":2}},{"id":5082,"inV":49,"properties":{"weight":1}},{"id":5083,"inV":25,"properties":{"weight":2}},{"id":5084,"inV":51,"properties":{"weight":1}},{"id":5085,"inV":15,"properties":{"weight":1}},{"id":5086,"inV":112,"properties":{"weight":4}},{"id":5087,"inV":121,"properties":{"weight":1}},{"id":5088,"inV":32,"properties":{"weight":7}},{"id":5089,"inV":68,"properties":{"weight":2}},{"id":5090,"inV":120,"properties":{"weight":77}},{"id":5091,"inV":103,"properties":{"weight":1}},{"id":5092,"inV":42,"properties":{"weight":3}},{"id":5093,"inV
 ":85,"properties":{"weight":4}},{"id":5094,"inV":76,"properties":{"weight":5}},{"id":5095,"inV":181,"properties":{"weight":2}},{"id":5096,"inV":14,"properties":{"weight":2}},{"id":5097,"inV":122,"properties":{"weight":1}},{"id":5098,"inV":153,"properties":{"weight":3}},{"id":5099,"inV":96,"properties":{"weight":1}},{"id":5100,"inV":82,"properties":{"weight":3}},{"id":5101,"inV":110,"properties":{"weight":1}},{"id":5102,"inV":19,"properties":{"weight":6}},{"id":5103,"inV":129,"properties":{"weight":1}},{"id":5104,"inV":84,"properties":{"weight":1}},{"id":5105,"inV":88,"properties":{"weight":9}},{"id":5106,"inV":97,"properties":{"weight":1}},{"id":5107,"inV":114,"properties":{"weight":2}},{"id":5108,"inV":30,"properties":{"weight":8}},{"id":5109,"inV":31,"properties":{"weight":8}},{"id":5110,"inV":69,"properties":{"weight":4}},{"id":5111,"inV":127,"properties":{"weight":2}},{"id":5112,"inV":60,"properties":{"weight":1}},{"id":5113,"inV":39,"properties":{"weight":2}},{"id":5114,"inV":2
 1,"properties":{"weight":1}},{"id":5115,"inV":117,"properties":{"weight":1}},{"id":5116,"inV":78,"properties":{"weight":1}},{"id":5117,"inV":38,"properties":{"weight":1}},{"id":5118,"inV":169,"properties":{"weight":2}},{"id":5119,"inV":118,"properties":{"weight":1}}],"sungBy":[{"id":7064,"inV":340}],"writtenBy":[{"id":7063,"inV":339}]},"properties":{"name":[{"id":9,"value":"BERTHA"}],"songType":[{"id":11,"value":"original"}],"performances":[{"id":10,"value":394}]}}
-{"id":5,"label":"song","inE":{"followedBy":[{"id":962,"outV":67,"properties":{"weight":5}},{"id":194,"outV":70,"properties":{"weight":8}},{"id":3,"outV":1,"properties":{"weight":1}},{"id":5446,"outV":231,"properties":{"weight":5}},{"id":6344,"outV":21,"properties":{"weight":6}},{"id":6666,"outV":12,"properties":{"weight":1}},{"id":1738,"outV":82,"properties":{"weight":1}},{"id":1867,"outV":94,"properties":{"weight":15}},{"id":4300,"outV":110,"properties":{"weight":1}},{"id":847,"outV":171,"properties":{"weight":1}},{"id":2832,"outV":101,"properties":{"weight":3}},{"id":6032,"outV":115,"properties":{"weight":1}},{"id":1170,"outV":26,"properties":{"weight":1}},{"id":5330,"outV":238,"properties":{"weight":1}},{"id":1491,"outV":164,"properties":{"weight":3}},{"id":1429,"outV":83,"properties":{"weight":3}},{"id":3033,"outV":14,"properties":{"weight":1}},{"id":6298,"outV":49,"properties":{"weight":1}},{"id":1373,"outV":130,"properties":{"weight":11}},{"id":4447,"outV":113,"properties":{"w
 eight":1}},{"id":5151,"outV":125,"properties":{"weight":6}},{"id":6431,"outV":134,"properties":{"weight":2}},{"id":5343,"outV":165,"properties":{"weight":2}},{"id":1953,"outV":148,"properties":{"weight":10}},{"id":2274,"outV":25,"properties":{"weight":8}},{"id":1634,"outV":210,"properties":{"weight":1}},{"id":100,"outV":46,"properties":{"weight":1}},{"id":933,"outV":91,"properties":{"weight":1}},{"id":2021,"outV":149,"properties":{"weight":1}},{"id":6694,"outV":141,"properties":{"weight":2}},{"id":4009,"outV":225,"properties":{"weight":1}},{"id":682,"outV":219,"properties":{"weight":1}},{"id":3694,"outV":3,"properties":{"weight":57}},{"id":4718,"outV":186,"properties":{"weight":6}},{"id":3055,"outV":153,"properties":{"weight":9}},{"id":2736,"outV":13,"properties":{"weight":3}},{"id":2480,"outV":68,"properties":{"weight":1}},{"id":5426,"outV":102,"properties":{"weight":1}},{"id":6899,"outV":147,"properties":{"weight":1}},{"id":5879,"outV":96,"properties":{"weight":22}},{"id":6201,"ou
 tV":319,"properties":{"weight":2}},{"id":5370,"outV":132,"properties":{"weight":2}},{"id":2236,"outV":29,"properties":{"weight":5}},{"id":4604,"outV":85,"properties":{"weight":2}},{"id":700,"outV":206,"properties":{"weight":1}},{"id":5759,"outV":129,"properties":{"weight":6}}]},"outE":{"followedBy":[{"id":273,"inV":3,"properties":{"weight":40}},{"id":274,"inV":26,"properties":{"weight":3}},{"id":275,"inV":114,"properties":{"weight":40}},{"id":276,"inV":1,"properties":{"weight":2}},{"id":277,"inV":74,"properties":{"weight":3}},{"id":278,"inV":122,"properties":{"weight":3}},{"id":279,"inV":133,"properties":{"weight":2}},{"id":280,"inV":83,"properties":{"weight":1}},{"id":281,"inV":153,"properties":{"weight":5}},{"id":282,"inV":159,"properties":{"weight":1}},{"id":283,"inV":13,"properties":{"weight":3}},{"id":284,"inV":25,"properties":{"weight":19}},{"id":285,"inV":96,"properties":{"weight":10}},{"id":286,"inV":160,"properties":{"weight":2}},{"id":287,"inV":32,"properties":{"weight":1}
 },{"id":288,"inV":120,"properties":{"weight":16}},{"id":289,"inV":50,"properties":{"weight":1}},{"id":290,"inV":116,"properties":{"weight":1}},{"id":291,"inV":127,"properties":{"weight":6}},{"id":292,"inV":65,"properties":{"weight":1}},{"id":293,"inV":130,"properties":{"weight":3}},{"id":294,"inV":125,"properties":{"weight":5}},{"id":295,"inV":70,"properties":{"weight":13}},{"id":296,"inV":134,"properties":{"weight":1}},{"id":297,"inV":161,"properties":{"weight":1}},{"id":298,"inV":162,"properties":{"weight":1}},{"id":299,"inV":124,"properties":{"weight":3}},{"id":300,"inV":38,"properties":{"weight":1}},{"id":301,"inV":29,"properties":{"weight":11}},{"id":302,"inV":163,"properties":{"weight":1}},{"id":303,"inV":94,"properties":{"weight":5}},{"id":304,"inV":85,"properties":{"weight":1}},{"id":305,"inV":164,"properties":{"weight":6}},{"id":306,"inV":64,"properties":{"weight":1}},{"id":307,"inV":150,"properties":{"weight":1}},{"id":308,"inV":165,"properties":{"weight":7}},{"id":309,"in
 V":92,"properties":{"weight":1}},{"id":310,"inV":140,"properties":{"weight":1}},{"id":311,"inV":166,"properties":{"weight":1}}],"sungBy":[{"id":7582,"inV":340}],"writtenBy":[{"id":7581,"inV":446}]},"properties":{"name":[{"id":12,"value":"GOING DOWN THE ROAD FEELING BAD"}],"songType":[{"id":14,"value":"cover"}],"performances":[{"id":13,"value":293}]}}
+{"id":3,"label":"song","inE":{"followedBy":[{"id":1,"outV":1,"properties":{"weight":2}},{"id":2051,"outV":92,"properties":{"weight":4}},{"id":1412,"outV":83,"properties":{"weight":6}},{"id":6669,"outV":12,"properties":{"weight":1}},{"id":526,"outV":120,"properties":{"weight":2}},{"id":910,"outV":91,"properties":{"weight":3}},{"id":1166,"outV":26,"properties":{"weight":4}},{"id":6286,"outV":49,"properties":{"weight":1}},{"id":273,"outV":5,"properties":{"weight":40}},{"id":2194,"outV":235,"properties":{"weight":1}},{"id":1684,"outV":124,"properties":{"weight":1}},{"id":1941,"outV":148,"properties":{"weight":4}},{"id":3221,"outV":63,"properties":{"weight":1}},{"id":2712,"outV":13,"properties":{"weight":3}},{"id":6425,"outV":134,"properties":{"weight":2}},{"id":5787,"outV":76,"properties":{"weight":2}},{"id":5148,"outV":125,"properties":{"weight":4}},{"id":6692,"outV":141,"properties":{"weight":2}},{"id":6310,"outV":123,"properties":{"weight":1}},{"id":6448,"outV":187,"properties":{"wei
 ght":3}},{"id":2225,"outV":226,"properties":{"weight":1}},{"id":5042,"outV":209,"properties":{"weight":1}},{"id":4789,"outV":114,"properties":{"weight":2}},{"id":1464,"outV":81,"properties":{"weight":1}},{"id":2232,"outV":215,"properties":{"weight":1}},{"id":4665,"outV":154,"properties":{"weight":1}},{"id":2235,"outV":29,"properties":{"weight":163}},{"id":6208,"outV":319,"properties":{"weight":4}},{"id":706,"outV":206,"properties":{"weight":2}},{"id":835,"outV":171,"properties":{"weight":1}},{"id":5188,"outV":99,"properties":{"weight":1}},{"id":1862,"outV":94,"properties":{"weight":10}},{"id":1735,"outV":82,"properties":{"weight":1}},{"id":6343,"outV":21,"properties":{"weight":1}},{"id":4937,"outV":277,"properties":{"weight":1}},{"id":3276,"outV":160,"properties":{"weight":1}},{"id":3149,"outV":104,"properties":{"weight":1}},{"id":1358,"outV":130,"properties":{"weight":18}},{"id":4304,"outV":110,"properties":{"weight":1}},{"id":1105,"outV":59,"properties":{"weight":1}},{"id":722,"ou
 tV":80,"properties":{"weight":1}},{"id":4182,"outV":54,"properties":{"weight":1}},{"id":1499,"outV":164,"properties":{"weight":2}},{"id":2397,"outV":179,"properties":{"weight":1}},{"id":351,"outV":178,"properties":{"weight":1}},{"id":6623,"outV":127,"properties":{"weight":3}},{"id":2018,"outV":149,"properties":{"weight":1}},{"id":7011,"outV":89,"properties":{"weight":2}},{"id":5348,"outV":165,"properties":{"weight":1}},{"id":2278,"outV":25,"properties":{"weight":7}},{"id":1255,"outV":27,"properties":{"weight":2}},{"id":3048,"outV":153,"properties":{"weight":13}},{"id":5867,"outV":96,"properties":{"weight":116}},{"id":364,"outV":74,"properties":{"weight":2}},{"id":492,"outV":98,"properties":{"weight":1}},{"id":3948,"outV":138,"properties":{"weight":4}},{"id":4335,"outV":62,"properties":{"weight":1}},{"id":3312,"outV":252,"properties":{"weight":1}},{"id":5745,"outV":129,"properties":{"weight":1}},{"id":4596,"outV":85,"properties":{"weight":3}},{"id":5367,"outV":132,"properties":{"weig
 ht":1}},{"id":633,"outV":23,"properties":{"weight":1}},{"id":891,"outV":140,"properties":{"weight":2}},{"id":5375,"outV":69,"properties":{"weight":1}},{"id":6143,"outV":289,"properties":{"weight":3}}]},"outE":{"followedBy":[{"id":3712,"inV":27,"properties":{"weight":1}},{"id":3713,"inV":110,"properties":{"weight":4}},{"id":3714,"inV":215,"properties":{"weight":4}},{"id":3715,"inV":127,"properties":{"weight":10}},{"id":3716,"inV":83,"properties":{"weight":3}},{"id":3717,"inV":103,"properties":{"weight":2}},{"id":3718,"inV":68,"properties":{"weight":1}},{"id":3719,"inV":134,"properties":{"weight":2}},{"id":3720,"inV":25,"properties":{"weight":10}},{"id":3721,"inV":125,"properties":{"weight":54}},{"id":3722,"inV":130,"properties":{"weight":26}},{"id":3723,"inV":141,"properties":{"weight":2}},{"id":3724,"inV":145,"properties":{"weight":1}},{"id":3725,"inV":319,"properties":{"weight":3}},{"id":3726,"inV":12,"properties":{"weight":1}},{"id":3727,"inV":160,"properties":{"weight":37}},{"id"
 :3728,"inV":70,"properties":{"weight":2}},{"id":3729,"inV":123,"properties":{"weight":1}},{"id":3730,"inV":129,"properties":{"weight":1}},{"id":3731,"inV":30,"properties":{"weight":2}},{"id":3732,"inV":148,"properties":{"weight":1}},{"id":3733,"inV":211,"properties":{"weight":3}},{"id":3734,"inV":87,"properties":{"weight":13}},{"id":3735,"inV":164,"properties":{"weight":4}},{"id":3736,"inV":64,"properties":{"weight":2}},{"id":3737,"inV":320,"properties":{"weight":1}},{"id":3738,"inV":61,"properties":{"weight":3}},{"id":3739,"inV":210,"properties":{"weight":3}},{"id":3740,"inV":50,"properties":{"weight":7}},{"id":3741,"inV":128,"properties":{"weight":3}},{"id":3742,"inV":315,"properties":{"weight":1}},{"id":3743,"inV":261,"properties":{"weight":1}},{"id":3744,"inV":213,"properties":{"weight":13}},{"id":3745,"inV":72,"properties":{"weight":1}},{"id":3746,"inV":38,"properties":{"weight":4}},{"id":3747,"inV":204,"properties":{"weight":14}},{"id":3748,"inV":62,"properties":{"weight":2}},
 {"id":3749,"inV":150,"properties":{"weight":8}},{"id":3750,"inV":309,"properties":{"weight":1}},{"id":3751,"inV":131,"properties":{"weight":1}},{"id":3752,"inV":151,"properties":{"weight":1}},{"id":3753,"inV":321,"properties":{"weight":1}},{"id":3754,"inV":90,"properties":{"weight":2}},{"id":3755,"inV":82,"properties":{"weight":1}},{"id":3756,"inV":120,"properties":{"weight":1}},{"id":3757,"inV":46,"properties":{"weight":5}},{"id":3758,"inV":157,"properties":{"weight":5}},{"id":3759,"inV":59,"properties":{"weight":1}},{"id":3760,"inV":81,"properties":{"weight":1}},{"id":3761,"inV":86,"properties":{"weight":5}},{"id":3762,"inV":140,"properties":{"weight":1}},{"id":3763,"inV":201,"properties":{"weight":1}},{"id":3764,"inV":214,"properties":{"weight":1}},{"id":3765,"inV":185,"properties":{"weight":2}},{"id":3766,"inV":216,"properties":{"weight":1}},{"id":3767,"inV":217,"properties":{"weight":2}},{"id":3768,"inV":236,"properties":{"weight":5}},{"id":3769,"inV":193,"properties":{"weight"
 :1}},{"id":3770,"inV":79,"properties":{"weight":2}},{"id":3771,"inV":84,"properties":{"weight":1}},{"id":3772,"inV":23,"properties":{"weight":2}},{"id":3773,"inV":31,"properties":{"weight":2}},{"id":3774,"inV":240,"properties":{"weight":1}},{"id":3775,"inV":292,"properties":{"weight":1}},{"id":3776,"inV":9,"properties":{"weight":1}},{"id":3777,"inV":259,"properties":{"weight":1}},{"id":3694,"inV":5,"properties":{"weight":57}},{"id":3695,"inV":114,"properties":{"weight":30}},{"id":3696,"inV":74,"properties":{"weight":2}},{"id":3697,"inV":78,"properties":{"weight":3}},{"id":3698,"inV":10,"properties":{"weight":1}},{"id":3699,"inV":26,"properties":{"weight":4}},{"id":3700,"inV":153,"properties":{"weight":7}},{"id":3701,"inV":4,"properties":{"weight":4}},{"id":3702,"inV":317,"properties":{"weight":1}},{"id":3703,"inV":13,"properties":{"weight":5}},{"id":3704,"inV":1,"properties":{"weight":2}},{"id":3705,"inV":21,"properties":{"weight":2}},{"id":3706,"inV":57,"properties":{"weight":2}},{
 "id":3707,"inV":122,"properties":{"weight":2}},{"id":3708,"inV":318,"properties":{"weight":1}},{"id":3709,"inV":94,"properties":{"weight":26}},{"id":3710,"inV":96,"properties":{"weight":7}},{"id":3711,"inV":124,"properties":{"weight":15}}],"sungBy":[{"id":7808,"inV":351}],"writtenBy":[{"id":7807,"inV":671}]},"properties":{"name":[{"id":6,"value":"NOT FADE AWAY"}],"songType":[{"id":8,"value":"cover"}],"performances":[{"id":7,"value":531}]}}
+{"id":4,"label":"song","inE":{"followedBy":[{"id":128,"outV":97,"properties":{"weight":1}},{"id":1664,"outV":267,"properties":{"weight":1}},{"id":2,"outV":1,"properties":{"weight":1}},{"id":899,"outV":140,"properties":{"weight":1}},{"id":1667,"outV":124,"properties":{"weight":15}},{"id":4099,"outV":48,"properties":{"weight":1}},{"id":1156,"outV":26,"properties":{"weight":16}},{"id":773,"outV":122,"properties":{"weight":9}},{"id":6534,"outV":242,"properties":{"weight":1}},{"id":1032,"outV":73,"properties":{"weight":1}},{"id":6664,"outV":12,"properties":{"weight":3}},{"id":5129,"outV":222,"properties":{"weight":1}},{"id":5387,"outV":69,"properties":{"weight":1}},{"id":5517,"outV":43,"properties":{"weight":2}},{"id":5006,"outV":30,"properties":{"weight":2}},{"id":6030,"outV":204,"properties":{"weight":2}},{"id":2063,"outV":92,"properties":{"weight":1}},{"id":915,"outV":91,"properties":{"weight":2}},{"id":6940,"outV":84,"properties":{"weight":5}},{"id":2464,"outV":68,"properties":{"weig
 ht":1}},{"id":5795,"outV":76,"properties":{"weight":2}},{"id":3620,"outV":24,"properties":{"weight":2}},{"id":4772,"outV":114,"properties":{"weight":25}},{"id":2982,"outV":14,"properties":{"weight":3}},{"id":3367,"outV":184,"properties":{"weight":6}},{"id":2345,"outV":87,"properties":{"weight":2}},{"id":2861,"outV":101,"properties":{"weight":6}},{"id":1840,"outV":275,"properties":{"weight":1}},{"id":5425,"outV":102,"properties":{"weight":1}},{"id":180,"outV":70,"properties":{"weight":46}},{"id":2613,"outV":158,"properties":{"weight":1}},{"id":5434,"outV":217,"properties":{"weight":1}},{"id":5562,"outV":162,"properties":{"weight":2}},{"id":1469,"outV":81,"properties":{"weight":1}},{"id":446,"outV":38,"properties":{"weight":7}},{"id":2494,"outV":90,"properties":{"weight":3}},{"id":3266,"outV":160,"properties":{"weight":10}},{"id":326,"outV":34,"properties":{"weight":1}},{"id":583,"outV":120,"properties":{"weight":2}},{"id":6855,"outV":64,"properties":{"weight":12}},{"id":73,"outV":46,
 "properties":{"weight":4}},{"id":4425,"outV":212,"properties":{"weight":1}},{"id":1613,"outV":210,"properties":{"weight":2}},{"id":4941,"outV":86,"properties":{"weight":2}},{"id":6350,"outV":21,"properties":{"weight":1}},{"id":3535,"outV":201,"properties":{"weight":1}},{"id":980,"outV":11,"properties":{"weight":3}},{"id":1494,"outV":164,"properties":{"weight":3}},{"id":5206,"outV":99,"properties":{"weight":1}},{"id":5847,"outV":61,"properties":{"weight":2}},{"id":6490,"outV":187,"properties":{"weight":1}},{"id":2781,"outV":15,"properties":{"weight":4}},{"id":5600,"outV":42,"properties":{"weight":1}},{"id":353,"outV":74,"properties":{"weight":6}},{"id":5474,"outV":79,"properties":{"weight":1}},{"id":1891,"outV":103,"properties":{"weight":19}},{"id":3811,"outV":88,"properties":{"weight":2}},{"id":5989,"outV":50,"properties":{"weight":12}},{"id":4327,"outV":110,"properties":{"weight":2}},{"id":2538,"outV":57,"properties":{"weight":4}},{"id":3050,"outV":153,"properties":{"weight":13}},{
 "id":4970,"outV":236,"properties":{"weight":1}},{"id":2283,"outV":25,"properties":{"weight":9}},{"id":236,"outV":145,"properties":{"weight":1}},{"id":6126,"outV":72,"properties":{"weight":2}},{"id":5232,"outV":214,"properties":{"weight":2}},{"id":4594,"outV":85,"properties":{"weight":1}},{"id":1652,"outV":213,"properties":{"weight":3}},{"id":4084,"outV":109,"properties":{"weight":1}},{"id":629,"outV":23,"properties":{"weight":10}},{"id":3701,"outV":3,"properties":{"weight":4}},{"id":5621,"outV":22,"properties":{"weight":1}},{"id":7029,"outV":89,"properties":{"weight":1}},{"id":5238,"outV":32,"properties":{"weight":3}},{"id":2684,"outV":13,"properties":{"weight":9}},{"id":3325,"outV":268,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":5120,"inV":40,"properties":{"weight":5}},{"id":5121,"inV":33,"properties":{"weight":3}},{"id":5122,"inV":79,"properties":{"weight":1}},{"id":5123,"inV":292,"properties":{"weight":1}},{"id":5071,"inV":50,"properties":{"weight":9}},{"id":5072,"in
 V":12,"properties":{"weight":26}},{"id":5073,"inV":18,"properties":{"weight":4}},{"id":5074,"inV":24,"properties":{"weight":9}},{"id":5075,"inV":23,"properties":{"weight":63}},{"id":5076,"inV":13,"properties":{"weight":12}},{"id":5077,"inV":10,"properties":{"weight":4}},{"id":5078,"inV":11,"properties":{"weight":3}},{"id":5079,"inV":26,"properties":{"weight":18}},{"id":5080,"inV":22,"properties":{"weight":1}},{"id":5081,"inV":16,"properties":{"weight":2}},{"id":5082,"inV":49,"properties":{"weight":1}},{"id":5083,"inV":25,"properties":{"weight":2}},{"id":5084,"inV":51,"properties":{"weight":1}},{"id":5085,"inV":15,"properties":{"weight":1}},{"id":5086,"inV":112,"properties":{"weight":4}},{"id":5087,"inV":121,"properties":{"weight":1}},{"id":5088,"inV":32,"properties":{"weight":7}},{"id":5089,"inV":68,"properties":{"weight":2}},{"id":5090,"inV":120,"properties":{"weight":77}},{"id":5091,"inV":103,"properties":{"weight":1}},{"id":5092,"inV":42,"properties":{"weight":3}},{"id":5093,"inV
 ":85,"properties":{"weight":4}},{"id":5094,"inV":76,"properties":{"weight":5}},{"id":5095,"inV":181,"properties":{"weight":2}},{"id":5096,"inV":14,"properties":{"weight":2}},{"id":5097,"inV":122,"properties":{"weight":1}},{"id":5098,"inV":153,"properties":{"weight":3}},{"id":5099,"inV":96,"properties":{"weight":1}},{"id":5100,"inV":82,"properties":{"weight":3}},{"id":5101,"inV":110,"properties":{"weight":1}},{"id":5102,"inV":19,"properties":{"weight":6}},{"id":5103,"inV":129,"properties":{"weight":1}},{"id":5104,"inV":84,"properties":{"weight":1}},{"id":5105,"inV":88,"properties":{"weight":9}},{"id":5106,"inV":97,"properties":{"weight":1}},{"id":5107,"inV":114,"properties":{"weight":2}},{"id":5108,"inV":30,"properties":{"weight":8}},{"id":5109,"inV":31,"properties":{"weight":8}},{"id":5110,"inV":69,"properties":{"weight":4}},{"id":5111,"inV":127,"properties":{"weight":2}},{"id":5112,"inV":60,"properties":{"weight":1}},{"id":5113,"inV":39,"properties":{"weight":2}},{"id":5114,"inV":2
 1,"properties":{"weight":1}},{"id":5115,"inV":117,"properties":{"weight":1}},{"id":5116,"inV":78,"properties":{"weight":1}},{"id":5117,"inV":38,"properties":{"weight":1}},{"id":5118,"inV":169,"properties":{"weight":2}},{"id":5119,"inV":118,"properties":{"weight":1}}],"sungBy":[{"id":7064,"inV":340}],"writtenBy":[{"id":7063,"inV":339}]},"properties":{"name":[{"id":9,"value":"BERTHA"}],"songType":[{"id":11,"value":"original"}],"performances":[{"id":10,"value":394}]}}
+{"id":5,"label":"song","inE":{"followedBy":[{"id":194,"outV":70,"properties":{"weight":8}},{"id":962,"outV":67,"properties":{"weight":5}},{"id":3,"outV":1,"properties":{"weight":1}},{"id":5446,"outV":231,"properties":{"weight":5}},{"id":6344,"outV":21,"properties":{"weight":6}},{"id":1738,"outV":82,"properties":{"weight":1}},{"id":6666,"outV":12,"properties":{"weight":1}},{"id":1867,"outV":94,"properties":{"weight":15}},{"id":4300,"outV":110,"properties":{"weight":1}},{"id":847,"outV":171,"properties":{"weight":1}},{"id":2832,"outV":101,"properties":{"weight":3}},{"id":6032,"outV":115,"properties":{"weight":1}},{"id":1170,"outV":26,"properties":{"weight":1}},{"id":5330,"outV":238,"properties":{"weight":1}},{"id":1491,"outV":164,"properties":{"weight":3}},{"id":1429,"outV":83,"properties":{"weight":3}},{"id":3033,"outV":14,"properties":{"weight":1}},{"id":6298,"outV":49,"properties":{"weight":1}},{"id":1373,"outV":130,"properties":{"weight":11}},{"id":4447,"outV":113,"properties":{"w
 eight":1}},{"id":5151,"outV":125,"properties":{"weight":6}},{"id":5343,"outV":165,"properties":{"weight":2}},{"id":6431,"outV":134,"properties":{"weight":2}},{"id":1953,"outV":148,"properties":{"weight":10}},{"id":1634,"outV":210,"properties":{"weight":1}},{"id":2274,"outV":25,"properties":{"weight":8}},{"id":100,"outV":46,"properties":{"weight":1}},{"id":933,"outV":91,"properties":{"weight":1}},{"id":2021,"outV":149,"properties":{"weight":1}},{"id":6694,"outV":141,"properties":{"weight":2}},{"id":4009,"outV":225,"properties":{"weight":1}},{"id":682,"outV":219,"properties":{"weight":1}},{"id":3694,"outV":3,"properties":{"weight":57}},{"id":4718,"outV":186,"properties":{"weight":6}},{"id":3055,"outV":153,"properties":{"weight":9}},{"id":2480,"outV":68,"properties":{"weight":1}},{"id":2736,"outV":13,"properties":{"weight":3}},{"id":5426,"outV":102,"properties":{"weight":1}},{"id":6899,"outV":147,"properties":{"weight":1}},{"id":5879,"outV":96,"properties":{"weight":22}},{"id":6201,"ou
 tV":319,"properties":{"weight":2}},{"id":5370,"outV":132,"properties":{"weight":2}},{"id":700,"outV":206,"properties":{"weight":1}},{"id":2236,"outV":29,"properties":{"weight":5}},{"id":4604,"outV":85,"properties":{"weight":2}},{"id":5759,"outV":129,"properties":{"weight":6}}]},"outE":{"followedBy":[{"id":273,"inV":3,"properties":{"weight":40}},{"id":274,"inV":26,"properties":{"weight":3}},{"id":275,"inV":114,"properties":{"weight":40}},{"id":276,"inV":1,"properties":{"weight":2}},{"id":277,"inV":74,"properties":{"weight":3}},{"id":278,"inV":122,"properties":{"weight":3}},{"id":279,"inV":133,"properties":{"weight":2}},{"id":280,"inV":83,"properties":{"weight":1}},{"id":281,"inV":153,"properties":{"weight":5}},{"id":282,"inV":159,"properties":{"weight":1}},{"id":283,"inV":13,"properties":{"weight":3}},{"id":284,"inV":25,"properties":{"weight":19}},{"id":285,"inV":96,"properties":{"weight":10}},{"id":286,"inV":160,"properties":{"weight":2}},{"id":287,"inV":32,"properties":{"weight":1}
 },{"id":288,"inV":120,"properties":{"weight":16}},{"id":289,"inV":50,"properties":{"weight":1}},{"id":290,"inV":116,"properties":{"weight":1}},{"id":291,"inV":127,"properties":{"weight":6}},{"id":292,"inV":65,"properties":{"weight":1}},{"id":293,"inV":130,"properties":{"weight":3}},{"id":294,"inV":125,"properties":{"weight":5}},{"id":295,"inV":70,"properties":{"weight":13}},{"id":296,"inV":134,"properties":{"weight":1}},{"id":297,"inV":161,"properties":{"weight":1}},{"id":298,"inV":162,"properties":{"weight":1}},{"id":299,"inV":124,"properties":{"weight":3}},{"id":300,"inV":38,"properties":{"weight":1}},{"id":301,"inV":29,"properties":{"weight":11}},{"id":302,"inV":163,"properties":{"weight":1}},{"id":303,"inV":94,"properties":{"weight":5}},{"id":304,"inV":85,"properties":{"weight":1}},{"id":305,"inV":164,"properties":{"weight":6}},{"id":306,"inV":64,"properties":{"weight":1}},{"id":307,"inV":150,"properties":{"weight":1}},{"id":308,"inV":165,"properties":{"weight":7}},{"id":309,"in
 V":92,"properties":{"weight":1}},{"id":310,"inV":140,"properties":{"weight":1}},{"id":311,"inV":166,"properties":{"weight":1}}],"sungBy":[{"id":7582,"inV":340}],"writtenBy":[{"id":7581,"inV":446}]},"properties":{"name":[{"id":12,"value":"GOING DOWN THE ROAD FEELING BAD"}],"songType":[{"id":14,"value":"cover"}],"performances":[{"id":13,"value":293}]}}
 {"id":6,"label":"song","inE":{"followedBy":[{"id":4,"outV":1,"properties":{"weight":1}},{"id":2023,"outV":282,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":2406,"inV":293,"properties":{"weight":1}},{"id":2407,"inV":96,"properties":{"weight":1}}],"sungBy":[{"id":7782,"inV":351}],"writtenBy":[{"id":7781,"inV":527}]},"properties":{"name":[{"id":15,"value":"MONA"}],"songType":[{"id":17,"value":"cover"}],"performances":[{"id":16,"value":1}]}}
 {"id":7,"label":"song","inE":{"followedBy":[{"id":2607,"outV":295,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":5,"inV":8,"properties":{"weight":1}}]},"properties":{"name":[{"id":18,"value":"WHERE HAVE THE HEROES GONE"}],"songType":[{"id":20,"value":""}],"performances":[{"id":19,"value":0}]}}
 {"id":8,"label":"song","inE":{"followedBy":[{"id":4705,"outV":111,"properties":{"weight":1}},{"id":5,"outV":7,"properties":{"weight":1}},{"id":5901,"outV":96,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":2976,"inV":302,"properties":{"weight":1}},{"id":2977,"inV":96,"properties":{"weight":1}},{"id":2978,"inV":72,"properties":{"weight":1}}],"sungBy":[{"id":7814,"inV":351}],"writtenBy":[{"id":7813,"inV":674}]},"properties":{"name":[{"id":21,"value":"OH BOY"}],"songType":[{"id":23,"value":"cover"}],"performances":[{"id":22,"value":2}]}}
-{"id":9,"label":"song","inE":{"followedBy":[{"id":3776,"outV":3,"properties":{"weight":1}},{"id":65,"outV":46,"properties":{"weight":2}},{"id":1923,"outV":103,"properties":{"weight":3}},{"id":5956,"outV":50,"properties":{"weight":2}},{"id":3077,"outV":153,"properties":{"weight":2}},{"id":5832,"outV":76,"properties":{"weight":1}},{"id":1161,"outV":26,"properties":{"weight":8}},{"id":6667,"outV":12,"properties":{"weight":2}},{"id":2699,"outV":13,"properties":{"weight":3}},{"id":6539,"outV":55,"properties":{"weight":1}},{"id":2578,"outV":57,"properties":{"weight":2}},{"id":787,"outV":122,"properties":{"weight":3}},{"id":3542,"outV":201,"properties":{"weight":1}},{"id":2775,"outV":15,"properties":{"weight":5}},{"id":2840,"outV":101,"properties":{"weight":2}},{"id":4953,"outV":86,"properties":{"weight":2}},{"id":1572,"outV":18,"properties":{"weight":3}},{"id":229,"outV":70,"properties":{"weight":1}},{"id":4264,"outV":10,"properties":{"weight":1}},{"id":4969,"outV":236,"properties":{"weig
 ht":3}},{"id":3498,"outV":58,"properties":{"weight":2}},{"id":5226,"outV":216,"properties":{"weight":1}},{"id":5548,"outV":166,"properties":{"weight":1}},{"id":2990,"outV":14,"properties":{"weight":4}},{"id":3950,"outV":138,"properties":{"weight":1}},{"id":6776,"outV":39,"properties":{"weight":1}},{"id":2488,"outV":68,"properties":{"weight":1}},{"id":3641,"outV":24,"properties":{"weight":2}},{"id":1532,"outV":164,"properties":{"weight":2}},{"id":1853,"outV":94,"properties":{"weight":1}},{"id":638,"outV":23,"properties":{"weight":2}},{"id":6335,"outV":21,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":6,"inV":10,"properties":{"weight":3}},{"id":7,"inV":11,"properties":{"weight":2}},{"id":8,"inV":12,"properties":{"weight":3}},{"id":9,"inV":13,"properties":{"weight":6}},{"id":10,"inV":14,"properties":{"weight":3}},{"id":11,"inV":15,"properties":{"weight":3}},{"id":12,"inV":16,"properties":{"weight":1}},{"id":13,"inV":17,"properties":{"weight":1}},{"id":14,"inV":18,"properties"
 :{"weight":5}},{"id":15,"inV":19,"properties":{"weight":1}},{"id":16,"inV":20,"properties":{"weight":1}},{"id":17,"inV":21,"properties":{"weight":1}},{"id":18,"inV":22,"properties":{"weight":2}},{"id":19,"inV":23,"properties":{"weight":2}},{"id":20,"inV":24,"properties":{"weight":1}},{"id":21,"inV":25,"properties":{"weight":1}},{"id":22,"inV":26,"properties":{"weight":1}},{"id":23,"inV":27,"properties":{"weight":1}},{"id":24,"inV":28,"properties":{"weight":2}},{"id":25,"inV":29,"properties":{"weight":1}},{"id":26,"inV":30,"properties":{"weight":5}},{"id":27,"inV":31,"properties":{"weight":2}},{"id":28,"inV":32,"properties":{"weight":1}},{"id":29,"inV":33,"properties":{"weight":2}},{"id":30,"inV":34,"properties":{"weight":2}},{"id":31,"inV":35,"properties":{"weight":3}},{"id":32,"inV":36,"properties":{"weight":2}},{"id":33,"inV":37,"properties":{"weight":3}},{"id":34,"inV":38,"properties":{"weight":1}},{"id":35,"inV":39,"properties":{"weight":1}},{"id":36,"inV":40,"properties":{"weig
 ht":1}},{"id":37,"inV":41,"properties":{"weight":1}},{"id":38,"inV":42,"properties":{"weight":1}},{"id":39,"inV":43,"properties":{"weight":1}}],"sungBy":[{"id":7190,"inV":340}],"writtenBy":[{"id":7189,"inV":339}]},"properties":{"name":[{"id":24,"value":"HERE COMES SUNSHINE"}],"songType":[{"id":26,"value":"original"}],"performances":[{"id":25,"value":65}]}}
-{"id":10,"label":"song","inE":{"followedBy":[{"id":3841,"outV":60,"properties":{"weight":1}},{"id":1027,"outV":73,"properties":{"weight":5}},{"id":6,"outV":9,"properties":{"weight":3}},{"id":4103,"outV":48,"properties":{"weight":5}},{"id":6279,"outV":49,"properties":{"weight":1}},{"id":3335,"outV":155,"properties":{"weight":1}},{"id":4233,"outV":52,"properties":{"weight":1}},{"id":4878,"outV":100,"properties":{"weight":19}},{"id":5264,"outV":32,"properties":{"weight":2}},{"id":2196,"outV":75,"properties":{"weight":4}},{"id":151,"outV":108,"properties":{"weight":3}},{"id":1571,"outV":18,"properties":{"weight":5}},{"id":3619,"outV":24,"properties":{"weight":2}},{"id":3237,"outV":63,"properties":{"weight":3}},{"id":4647,"outV":154,"properties":{"weight":1}},{"id":4521,"outV":105,"properties":{"weight":3}},{"id":1195,"outV":26,"properties":{"weight":1}},{"id":6956,"outV":84,"properties":{"weight":1}},{"id":6444,"outV":187,"properties":{"weight":9}},{"id":687,"outV":157,"properties":{"we
 ight":1}},{"id":4784,"outV":114,"properties":{"weight":1}},{"id":6064,"outV":115,"properties":{"weight":1}},{"id":3890,"outV":51,"properties":{"weight":9}},{"id":1714,"outV":82,"properties":{"weight":3}},{"id":55,"outV":46,"properties":{"weight":1}},{"id":5175,"outV":71,"properties":{"weight":1}},{"id":1337,"outV":31,"properties":{"weight":1}},{"id":4155,"outV":54,"properties":{"weight":6}},{"id":1083,"outV":59,"properties":{"weight":10}},{"id":6077,"outV":72,"properties":{"weight":5}},{"id":5441,"outV":239,"properties":{"weight":1}},{"id":1987,"outV":152,"properties":{"weight":2}},{"id":2116,"outV":17,"properties":{"weight":7}},{"id":1860,"outV":94,"properties":{"weight":1}},{"id":3269,"outV":160,"properties":{"weight":2}},{"id":454,"outV":38,"properties":{"weight":1}},{"id":3142,"outV":104,"properties":{"weight":4}},{"id":2505,"outV":57,"properties":{"weight":12}},{"id":6859,"outV":64,"properties":{"weight":1}},{"id":6603,"outV":127,"properties":{"weight":4}},{"id":717,"outV":80,"
 properties":{"weight":9}},{"id":1360,"outV":130,"properties":{"weight":2}},{"id":3026,"outV":14,"properties":{"weight":1}},{"id":5972,"outV":50,"properties":{"weight":1}},{"id":5077,"outV":4,"properties":{"weight":4}},{"id":2392,"outV":87,"properties":{"weight":1}},{"id":1250,"outV":27,"properties":{"weight":10}},{"id":4706,"outV":111,"properties":{"weight":3}},{"id":6755,"outV":53,"properties":{"weight":1}},{"id":2917,"outV":78,"properties":{"weight":10}},{"id":485,"outV":98,"properties":{"weight":4}},{"id":3559,"outV":56,"properties":{"weight":16}},{"id":3436,"outV":58,"properties":{"weight":10}},{"id":3820,"outV":88,"properties":{"weight":1}},{"id":4463,"outV":202,"properties":{"weight":4}},{"id":6256,"outV":117,"properties":{"weight":1}},{"id":880,"outV":189,"properties":{"weight":1}},{"id":3698,"outV":3,"properties":{"weight":1}},{"id":2291,"outV":25,"properties":{"weight":1}},{"id":2035,"outV":180,"properties":{"weight":1}},{"id":3317,"outV":252,"properties":{"weight":1}},{"id
 ":2806,"outV":15,"properties":{"weight":2}},{"id":2427,"outV":68,"properties":{"weight":2}},{"id":6782,"outV":39,"properties":{"weight":4}},{"id":4351,"outV":62,"properties":{"weight":2}}]},"outE":{"followedBy":[{"id":4235,"inV":56,"properties":{"weight":13}},{"id":4236,"inV":27,"properties":{"weight":7}},{"id":4237,"inV":58,"properties":{"weight":11}},{"id":4238,"inV":80,"properties":{"weight":6}},{"id":4239,"inV":59,"properties":{"weight":9}},{"id":4240,"inV":100,"properties":{"weight":21}},{"id":4241,"inV":104,"properties":{"weight":5}},{"id":4242,"inV":50,"properties":{"weight":2}},{"id":4243,"inV":48,"properties":{"weight":8}},{"id":4244,"inV":54,"properties":{"weight":13}},{"id":4245,"inV":19,"properties":{"weight":9}},{"id":4246,"inV":72,"properties":{"weight":4}},{"id":4247,"inV":14,"properties":{"weight":1}},{"id":4248,"inV":122,"properties":{"weight":2}},{"id":4249,"inV":235,"properties":{"weight":1}},{"id":4250,"inV":218,"properties":{"weight":1}},{"id":4251,"inV":252,"pr
 operties":{"weight":1}},{"id":4252,"inV":89,"properties":{"weight":3}},{"id":4253,"inV":57,"properties":{"weight":12}},{"id":4254,"inV":49,"properties":{"weight":3}},{"id":4255,"inV":94,"properties":{"weight":3}},{"id":4256,"inV":153,"properties":{"weight":1}},{"id":4257,"inV":13,"properties":{"weight":1}},{"id":4258,"inV":160,"properties":{"weight":1}},{"id":4259,"inV":51,"properties":{"weight":10}},{"id":4260,"inV":18,"properties":{"weight":3}},{"id":4261,"inV":202,"properties":{"weight":4}},{"id":4262,"inV":17,"properties":{"weight":5}},{"id":4263,"inV":46,"properties":{"weight":1}},{"id":4264,"inV":9,"properties":{"weight":1}},{"id":4265,"inV":55,"properties":{"weight":1}},{"id":4266,"inV":125,"properties":{"weight":1}},{"id":4267,"inV":69,"properties":{"weight":2}},{"id":4268,"inV":98,"properties":{"weight":8}},{"id":4269,"inV":82,"properties":{"weight":4}},{"id":4270,"inV":154,"properties":{"weight":1}},{"id":4271,"inV":105,"properties":{"weight":7}},{"id":4272,"inV":112,"prop
 erties":{"weight":2}},{"id":4273,"inV":109,"properties":{"weight":1}},{"id":4274,"inV":42,"properties":{"weight":2}},{"id":4275,"inV":121,"properties":{"weight":1}},{"id":4276,"inV":73,"properties":{"weight":5}},{"id":4277,"inV":106,"properties":{"weight":1}},{"id":4278,"inV":116,"properties":{"weight":1}},{"id":4279,"inV":68,"properties":{"weight":2}},{"id":4280,"inV":152,"properties":{"weight":1}},{"id":4281,"inV":23,"properties":{"weight":6}},{"id":4282,"inV":88,"properties":{"weight":1}},{"id":4283,"inV":39,"properties":{"weight":4}},{"id":4284,"inV":12,"properties":{"weight":1}},{"id":4285,"inV":111,"properties":{"weight":1}},{"id":4286,"inV":99,"properties":{"weight":1}},{"id":4287,"inV":87,"properties":{"weight":2}},{"id":4288,"inV":108,"properties":{"weight":2}},{"id":4289,"inV":53,"properties":{"weight":4}},{"id":4290,"inV":26,"properties":{"weight":5}},{"id":4291,"inV":117,"properties":{"weight":2}},{"id":4292,"inV":115,"properties":{"weight":2}},{"id":4293,"inV":63,"prope
 rties":{"weight":3}},{"id":4294,"inV":103,"properties":{"weight":1}}],"sungBy":[{"id":7460,"inV":351}],"writtenBy":[{"id":7459,"inV":471}]},"properties":{"name":[{"id":27,"value":"BEAT IT ON DOWN THE LINE"}],"songType":[{"id":29,"value":"cover"}],"performances":[{"id":28,"value":325}]}}
-{"id":11,"label":"song","inE":{"followedBy":[{"id":1088,"outV":59,"properties":{"weight":14}},{"id":6273,"outV":49,"properties":{"weight":2}},{"id":1989,"outV":152,"properties":{"weight":2}},{"id":7,"outV":9,"properties":{"weight":2}},{"id":4552,"outV":105,"properties":{"weight":3}},{"id":521,"outV":205,"properties":{"weight":1}},{"id":714,"outV":80,"properties":{"weight":5}},{"id":3146,"outV":104,"properties":{"weight":3}},{"id":4876,"outV":100,"properties":{"weight":2}},{"id":2190,"outV":235,"properties":{"weight":1}},{"id":4496,"outV":202,"properties":{"weight":1}},{"id":2513,"outV":57,"properties":{"weight":4}},{"id":4053,"outV":173,"properties":{"weight":1}},{"id":5078,"outV":4,"properties":{"weight":3}},{"id":1309,"outV":27,"properties":{"weight":5}},{"id":5025,"outV":30,"properties":{"weight":1}},{"id":4769,"outV":114,"properties":{"weight":1}},{"id":3554,"outV":56,"properties":{"weight":7}},{"id":1064,"outV":73,"properties":{"weight":1}},{"id":2920,"outV":78,"properties":{"w
 eight":2}},{"id":6056,"outV":115,"properties":{"weight":2}},{"id":41,"outV":46,"properties":{"weight":2}},{"id":3434,"outV":58,"properties":{"weight":5}},{"id":6442,"outV":187,"properties":{"weight":7}},{"id":1775,"outV":234,"properties":{"weight":4}},{"id":3888,"outV":51,"properties":{"weight":1}},{"id":626,"outV":23,"properties":{"weight":1}},{"id":6772,"outV":39,"properties":{"weight":1}},{"id":1396,"outV":190,"properties":{"weight":1}},{"id":4020,"outV":191,"properties":{"weight":1}},{"id":3637,"outV":24,"properties":{"weight":2}},{"id":6072,"outV":72,"properties":{"weight":5}},{"id":4157,"outV":54,"properties":{"weight":2}}]},"outE":{"followedBy":[{"id":972,"inV":57,"properties":{"weight":4}},{"id":973,"inV":59,"properties":{"weight":3}},{"id":974,"inV":53,"properties":{"weight":4}},{"id":975,"inV":54,"properties":{"weight":15}},{"id":976,"inV":56,"properties":{"weight":3}},{"id":977,"inV":48,"properties":{"weight":3}},{"id":978,"inV":72,"properties":{"weight":4}},{"id":979,"in
 V":19,"properties":{"weight":9}},{"id":980,"inV":4,"properties":{"weight":3}},{"id":981,"inV":58,"properties":{"weight":6}},{"id":982,"inV":46,"properties":{"weight":1}},{"id":983,"inV":234,"properties":{"weight":7}},{"id":984,"inV":235,"properties":{"weight":2}},{"id":985,"inV":207,"properties":{"weight":4}},{"id":986,"inV":39,"properties":{"weight":3}},{"id":987,"inV":50,"properties":{"weight":1}},{"id":988,"inV":104,"properties":{"weight":2}},{"id":989,"inV":49,"properties":{"weight":1}},{"id":990,"inV":17,"properties":{"weight":3}},{"id":991,"inV":100,"properties":{"weight":1}},{"id":992,"inV":24,"properties":{"weight":1}},{"id":993,"inV":170,"properties":{"weight":2}},{"id":994,"inV":73,"properties":{"weight":1}},{"id":995,"inV":173,"properties":{"weight":1}},{"id":996,"inV":236,"properties":{"weight":1}},{"id":997,"inV":202,"properties":{"weight":3}},{"id":998,"inV":80,"properties":{"weight":2}},{"id":999,"inV":115,"properties":{"weight":4}},{"id":1000,"inV":105,"properties":{
 "weight":1}}],"sungBy":[{"id":7072,"inV":351}],"writtenBy":[{"id":7071,"inV":350}]},"properties":{"name":[{"id":30,"value":"BLACK THROATED WIND"}],"songType":[{"id":32,"value":"original"}],"performances":[{"id":31,"value":158}]}}
-{"id":12,"label":"song","inE":{"followedBy":[{"id":3072,"outV":153,"properties":{"weight":4}},{"id":2433,"outV":68,"properties":{"weight":1}},{"id":1410,"outV":83,"properties":{"weight":1}},{"id":4227,"outV":52,"properties":{"weight":3}},{"id":3331,"outV":155,"properties":{"weight":2}},{"id":1028,"outV":73,"properties":{"weight":12}},{"id":4102,"outV":48,"properties":{"weight":33}},{"id":8,"outV":9,"properties":{"weight":3}},{"id":6281,"outV":49,"properties":{"weight":2}},{"id":652,"outV":23,"properties":{"weight":2}},{"id":5388,"outV":69,"properties":{"weight":1}},{"id":525,"outV":120,"properties":{"weight":1}},{"id":3726,"outV":3,"properties":{"weight":1}},{"id":3855,"outV":60,"properties":{"weight":1}},{"id":783,"outV":122,"properties":{"weight":1}},{"id":3986,"outV":106,"properties":{"weight":1}},{"id":1938,"outV":148,"properties":{"weight":1}},{"id":1172,"outV":26,"properties":{"weight":4}},{"id":916,"outV":91,"properties":{"weight":1}},{"id":6935,"outV":84,"properties":{"weigh
 t":5}},{"id":5017,"outV":30,"properties":{"weight":1}},{"id":3225,"outV":63,"properties":{"weight":4}},{"id":2203,"outV":75,"properties":{"weight":3}},{"id":155,"outV":108,"properties":{"weight":6}},{"id":4893,"outV":100,"properties":{"weight":7}},{"id":4640,"outV":154,"properties":{"weight":10}},{"id":5665,"outV":169,"properties":{"weight":1}},{"id":5286,"outV":32,"properties":{"weight":4}},{"id":2598,"outV":112,"properties":{"weight":7}},{"id":1702,"outV":124,"properties":{"weight":1}},{"id":3879,"outV":51,"properties":{"weight":12}},{"id":4007,"outV":225,"properties":{"weight":1}},{"id":424,"outV":38,"properties":{"weight":5}},{"id":5034,"outV":47,"properties":{"weight":1}},{"id":4522,"outV":105,"properties":{"weight":12}},{"id":4779,"outV":114,"properties":{"weight":3}},{"id":6576,"outV":116,"properties":{"weight":1}},{"id":6835,"outV":64,"properties":{"weight":1}},{"id":6455,"outV":187,"properties":{"weight":12}},{"id":5304,"outV":170,"properties":{"weight":2}},{"id":824,"outV"
 :171,"properties":{"weight":1}},{"id":6074,"outV":72,"properties":{"weight":4}},{"id":1722,"outV":82,"properties":{"weight":1}},{"id":4284,"outV":10,"properties":{"weight":1}},{"id":2109,"outV":17,"properties":{"weight":24}},{"id":703,"outV":206,"properties":{"weight":2}},{"id":5952,"outV":50,"properties":{"weight":7}},{"id":5440,"outV":239,"properties":{"weight":2}},{"id":1858,"outV":94,"properties":{"weight":2}},{"id":1347,"outV":31,"properties":{"weight":1}},{"id":1605,"outV":18,"properties":{"weight":1}},{"id":4165,"outV":54,"properties":{"weight":17}},{"id":3654,"outV":24,"properties":{"weight":3}},{"id":6598,"outV":127,"properties":{"weight":1}},{"id":4038,"outV":173,"properties":{"weight":1}},{"id":3271,"outV":160,"properties":{"weight":1}},{"id":3527,"outV":223,"properties":{"weight":1}},{"id":1096,"outV":59,"properties":{"weight":26}},{"id":3144,"outV":104,"properties":{"weight":24}},{"id":1993,"outV":152,"properties":{"weight":2}},{"id":6985,"outV":175,"properties":{"weigh
 t":1}},{"id":6730,"outV":53,"properties":{"weight":4}},{"id":3019,"outV":14,"properties":{"weight":1}},{"id":3788,"outV":168,"properties":{"weight":1}},{"id":5072,"outV":4,"properties":{"weight":26}},{"id":2515,"outV":57,"properties":{"weight":3}},{"id":1365,"outV":130,"properties":{"weight":2}},{"id":2647,"outV":137,"properties":{"weight":1}},{"id":730,"outV":80,"properties":{"weight":12}},{"id":2780,"outV":15,"properties":{"weight":3}},{"id":3810,"outV":88,"properties":{"weight":6}},{"id":482,"outV":98,"properties":{"weight":8}},{"id":7013,"outV":89,"properties":{"weight":1}},{"id":4072,"outV":109,"properties":{"weight":1}},{"id":2281,"outV":25,"properties":{"weight":2}},{"id":2668,"outV":13,"properties":{"weight":3}},{"id":3565,"outV":56,"properties":{"weight":9}},{"id":1262,"outV":27,"properties":{"weight":17}},{"id":2031,"outV":180,"properties":{"weight":1}},{"id":6769,"outV":39,"properties":{"weight":2}},{"id":1779,"outV":234,"properties":{"weight":1}},{"id":4468,"outV":202,"p
 roperties":{"weight":4}},{"id":1909,"outV":103,"properties":{"weight":1}},{"id":3446,"outV":58,"properties":{"weight":4}},{"id":2934,"outV":78,"properties":{"weight":1}},{"id":381,"outV":74,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":6656,"inV":49,"properties":{"weight":9}},{"id":6657,"inV":19,"properties":{"weight":3}},{"id":6658,"inV":27,"properties":{"weight":9}},{"id":6659,"inV":252,"properties":{"weight":1}},{"id":6660,"inV":206,"properties":{"weight":1}},{"id":6661,"inV":89,"properties":{"weight":4}},{"id":6662,"inV":160,"properties":{"weight":1}},{"id":6663,"inV":15,"properties":{"weight":167}},{"id":6664,"inV":4,"properties":{"weight":3}},{"id":6665,"inV":202,"properties":{"weight":2}},{"id":6666,"inV":5,"properties":{"weight":1}},{"id":6667,"inV":9,"properties":{"weight":2}},{"id":6668,"inV":83,"properties":{"weight":3}},{"id":6669,"inV":3,"properties":{"weight":1}},{"id":6670,"inV":52,"properties":{"weight":1}},{"id":6671,"inV":25,"properties":{"weight":1}},{"
 id":6672,"inV":46,"properties":{"weight":1}},{"id":6673,"inV":123,"properties":{"weight":2}},{"id":6674,"inV":51,"properties":{"weight":4}},{"id":6675,"inV":17,"properties":{"weight":3}},{"id":6676,"inV":56,"properties":{"weight":5}},{"id":6677,"inV":98,"properties":{"weight":5}},{"id":6678,"inV":104,"properties":{"weight":4}},{"id":6679,"inV":69,"properties":{"weight":3}},{"id":6680,"inV":170,"properties":{"weight":2}},{"id":6681,"inV":82,"properties":{"weight":1}},{"id":6682,"inV":80,"properties":{"weight":2}},{"id":6683,"inV":215,"properties":{"weight":1}},{"id":6684,"inV":48,"properties":{"weight":1}},{"id":6685,"inV":14,"properties":{"weight":3}},{"id":6686,"inV":50,"properties":{"weight":2}},{"id":6687,"inV":24,"properties":{"weight":83}},{"id":6688,"inV":18,"properties":{"weight":1}},{"id":6689,"inV":39,"properties":{"weight":6}},{"id":6690,"inV":105,"properties":{"weight":1}},{"id":6691,"inV":131,"properties":{"weight":14}},{"id":6645,"inV":72,"properties":{"weight":7}},{"id
 ":6646,"inV":58,"properties":{"weight":7}},{"id":6647,"inV":57,"properties":{"weight":6}},{"id":6648,"inV":54,"properties":{"weight":8}},{"id":6649,"inV":59,"properties":{"weight":14}},{"id":6650,"inV":100,"properties":{"weight":7}},{"id":6651,"inV":53,"properties":{"weight":4}},{"id":6652,"inV":148,"properties":{"weight":1}},{"id":6653,"inV":218,"properties":{"weight":2}},{"id":6654,"inV":235,"properties":{"weight":2}},{"id":6655,"inV":130,"properties":{"weight":1}}],"sungBy":[{"id":7776,"inV":351}],"writtenBy":[{"id":7775,"inV":659}]},"properties":{"name":[{"id":33,"value":"ME AND MY UNCLE"}],"songType":[{"id":35,"value":"cover"}],"performances":[{"id":34,"value":616}]}}
-{"id":13,"label":"song","inE":{"followedBy":[{"id":4865,"outV":35,"properties":{"weight":4}},{"id":1026,"outV":73,"properties":{"weight":1}},{"id":3330,"outV":155,"properties":{"weight":2}},{"id":5636,"outV":22,"properties":{"weight":1}},{"id":775,"outV":122,"properties":{"weight":1}},{"id":6407,"outV":134,"properties":{"weight":24}},{"id":1799,"outV":196,"properties":{"weight":2}},{"id":9,"outV":9,"properties":{"weight":6}},{"id":4874,"outV":100,"properties":{"weight":6}},{"id":4108,"outV":48,"properties":{"weight":3}},{"id":5132,"outV":222,"properties":{"weight":1}},{"id":2830,"outV":101,"properties":{"weight":8}},{"id":3857,"outV":60,"properties":{"weight":35}},{"id":6931,"outV":84,"properties":{"weight":7}},{"id":6165,"outV":36,"properties":{"weight":1}},{"id":533,"outV":120,"properties":{"weight":1}},{"id":5142,"outV":125,"properties":{"weight":11}},{"id":4630,"outV":154,"properties":{"weight":8}},{"id":283,"outV":5,"properties":{"weight":3}},{"id":1567,"outV":18,"properties":{
 "weight":3}},{"id":1823,"outV":41,"properties":{"weight":4}},{"id":3359,"outV":184,"properties":{"weight":3}},{"id":3617,"outV":24,"properties":{"weight":1}},{"id":3108,"outV":153,"properties":{"weight":1}},{"id":3878,"outV":51,"properties":{"weight":6}},{"id":2347,"outV":87,"properties":{"weight":8}},{"id":6443,"outV":187,"properties":{"weight":47}},{"id":6700,"outV":141,"properties":{"weight":4}},{"id":5682,"outV":167,"properties":{"weight":1}},{"id":53,"outV":46,"properties":{"weight":4}},{"id":5943,"outV":50,"properties":{"weight":1}},{"id":823,"outV":171,"properties":{"weight":24}},{"id":4151,"outV":218,"properties":{"weight":2}},{"id":2617,"outV":158,"properties":{"weight":1}},{"id":3386,"outV":177,"properties":{"weight":2}},{"id":4411,"outV":327,"properties":{"weight":1}},{"id":1852,"outV":94,"properties":{"weight":4}},{"id":6206,"outV":319,"properties":{"weight":1}},{"id":2111,"outV":17,"properties":{"weight":4}},{"id":4159,"outV":54,"properties":{"weight":16}},{"id":1087,"o
 utV":59,"properties":{"weight":5}},{"id":6723,"outV":53,"properties":{"weight":6}},{"id":6984,"outV":175,"properties":{"weight":1}},{"id":3145,"outV":104,"properties":{"weight":4}},{"id":4947,"outV":86,"properties":{"weight":1}},{"id":5203,"outV":99,"properties":{"weight":2}},{"id":1366,"outV":130,"properties":{"weight":12}},{"id":1622,"outV":210,"properties":{"weight":1}},{"id":2908,"outV":118,"properties":{"weight":1}},{"id":1885,"outV":103,"properties":{"weight":3}},{"id":4959,"outV":207,"properties":{"weight":6}},{"id":6763,"outV":39,"properties":{"weight":8}},{"id":3435,"outV":58,"properties":{"weight":8}},{"id":5741,"outV":129,"properties":{"weight":12}},{"id":366,"outV":74,"properties":{"weight":38}},{"id":2926,"outV":78,"properties":{"weight":3}},{"id":623,"outV":23,"properties":{"weight":1}},{"id":4721,"outV":186,"properties":{"weight":4}},{"id":2165,"outV":151,"properties":{"weight":1}},{"id":886,"outV":140,"properties":{"weight":1}},{"id":3703,"outV":3,"properties":{"weig
 ht":5}},{"id":7031,"outV":89,"properties":{"weight":4}},{"id":1411,"outV":83,"properties":{"weight":7}},{"id":6278,"outV":49,"properties":{"weight":1}},{"id":3974,"outV":106,"properties":{"weight":2}},{"id":912,"outV":91,"properties":{"weight":59}},{"id":2192,"outV":235,"properties":{"weight":1}},{"id":4759,"outV":37,"properties":{"weight":2}},{"id":1179,"outV":26,"properties":{"weight":2}},{"id":5789,"outV":76,"properties":{"weight":3}},{"id":4257,"outV":10,"properties":{"weight":1}},{"id":6561,"outV":172,"properties":{"weight":1}},{"id":4771,"outV":114,"properties":{"weight":3}},{"id":1454,"outV":81,"properties":{"weight":10}},{"id":6073,"outV":72,"properties":{"weight":13}},{"id":5306,"outV":170,"properties":{"weight":4}},{"id":4027,"outV":173,"properties":{"weight":3}},{"id":1725,"outV":82,"properties":{"weight":3}},{"id":960,"outV":67,"properties":{"weight":2}},{"id":1985,"outV":152,"properties":{"weight":1}},{"id":6594,"outV":127,"properties":{"weight":6}},{"id":6342,"outV":21
 ,"properties":{"weight":4}},{"id":455,"outV":139,"properties":{"weight":1}},{"id":3277,"outV":160,"properties":{"weight":3}},{"id":5837,"outV":258,"properties":{"weight":1}},{"id":2256,"outV":29,"properties":{"weight":1}},{"id":208,"outV":70,"properties":{"weight":2}},{"id":721,"outV":80,"properties":{"weight":1}},{"id":2771,"outV":15,"properties":{"weight":3}},{"id":5076,"outV":4,"properties":{"weight":12}},{"id":2519,"outV":57,"properties":{"weight":10}},{"id":4312,"outV":110,"properties":{"weight":1}},{"id":2268,"outV":25,"properties":{"weight":8}},{"id":2014,"outV":149,"properties":{"weight":1}},{"id":3552,"outV":56,"properties":{"weight":8}},{"id":481,"outV":98,"properties":{"weight":3}},{"id":1764,"outV":28,"properties":{"weight":3}},{"id":1258,"outV":27,"properties":{"weight":3}},{"id":4846,"outV":119,"properties":{"weight":1}},{"id":1518,"outV":164,"properties":{"weight":1}},{"id":4593,"outV":85,"properties":{"weight":2}},{"id":244,"outV":150,"properties":{"weight":3}},{"id"
 :1780,"outV":234,"properties":{"weight":2}},{"id":4344,"outV":62,"properties":{"weight":12}},{"id":2044,"outV":92,"properties":{"weight":2}},{"id":5374,"outV":69,"properties":{"weight":34}},{"id":5886,"outV":96,"properties":{"weight":15}}]},"outE":{"followedBy":[{"id":2688,"inV":94,"properties":{"weight":4}},{"id":2689,"inV":130,"properties":{"weight":11}},{"id":2690,"inV":83,"properties":{"weight":13}},{"id":2691,"inV":170,"properties":{"weight":1}},{"id":2692,"inV":51,"properties":{"weight":3}},{"id":2693,"inV":22,"properties":{"weight":2}},{"id":2694,"inV":296,"properties":{"weight":1}},{"id":2695,"inV":52,"properties":{"weight":1}},{"id":2696,"inV":17,"properties":{"weight":2}},{"id":2697,"inV":202,"properties":{"weight":3}},{"id":2698,"inV":27,"properties":{"weight":2}},{"id":2699,"inV":9,"properties":{"weight":3}},{"id":2700,"inV":25,"properties":{"weight":12}},{"id":2701,"inV":195,"properties":{"weight":2}},{"id":2702,"inV":206,"properties":{"weight":1}},{"id":2703,"inV":39,"
 properties":{"weight":1}},{"id":2704,"inV":69,"properties":{"weight":6}},{"id":2705,"inV":24,"properties":{"weight":1}},{"id":2706,"inV":82,"properties":{"weight":3}},{"id":2707,"inV":57,"properties":{"weight":1}},{"id":2708,"inV":134,"properties":{"weight":9}},{"id":2709,"inV":110,"properties":{"weight":1}},{"id":2710,"inV":99,"properties":{"weight":3}},{"id":2711,"inV":76,"properties":{"weight":4}},{"id":2712,"inV":3,"properties":{"weight":3}},{"id":2713,"inV":178,"properties":{"weight":1}},{"id":2714,"inV":184,"properties":{"weight":1}},{"id":2715,"inV":60,"properties":{"weight":21}},{"id":2716,"inV":148,"properties":{"weight":1}},{"id":2717,"inV":32,"properties":{"weight":1}},{"id":2718,"inV":91,"properties":{"weight":42}},{"id":2719,"inV":103,"properties":{"weight":1}},{"id":2720,"inV":114,"properties":{"weight":4}},{"id":2721,"inV":141,"properties":{"weight":4}},{"id":2722,"inV":154,"properties":{"weight":3}},{"id":2723,"inV":109,"properties":{"weight":2}},{"id":2724,"inV":125
 ,"properties":{"weight":9}},{"id":2725,"inV":85,"properties":{"weight":2}},{"id":2726,"inV":84,"properties":{"weight":5}},{"id":2727,"inV":50,"properties":{"weight":1}},{"id":2728,"inV":214,"properties":{"weight":1}},{"id":2729,"inV":72,"properties":{"weight":1}},{"id":2730,"inV":246,"properties":{"weight":1}},{"id":2731,"inV":129,"properties":{"weight":29}},{"id":2732,"inV":65,"properties":{"weight":2}},{"id":2733,"inV":133,"properties":{"weight":1}},{"id":2734,"inV":62,"properties":{"weight":1}},{"id":2735,"inV":29,"properties":{"weight":4}},{"id":2736,"inV":5,"properties":{"weight":3}},{"id":2737,"inV":183,"properties":{"weight":3}},{"id":2738,"inV":210,"properties":{"weight":1}},{"id":2739,"inV":128,"properties":{"weight":1}},{"id":2740,"inV":67,"properties":{"weight":1}},{"id":2741,"inV":212,"properties":{"weight":1}},{"id":2742,"inV":70,"properties":{"weight":2}},{"id":2743,"inV":75,"properties":{"weight":1}},{"id":2744,"inV":71,"properties":{"weight":1}},{"id":2745,"inV":168,
 "properties":{"weight":2}},{"id":2746,"inV":157,"properties":{"weight":1}},{"id":2747,"inV":92,"properties":{"weight":1}},{"id":2748,"inV":89,"properties":{"weight":5}},{"id":2749,"inV":81,"properties":{"weight":1}},{"id":2750,"inV":187,"properties":{"weight":1}},{"id":2751,"inV":164,"properties":{"weight":1}},{"id":2752,"inV":136,"properties":{"weight":1}},{"id":2753,"inV":46,"properties":{"weight":1}},{"id":2660,"inV":207,"properties":{"weight":3}},{"id":2661,"inV":122,"properties":{"weight":17}},{"id":2662,"inV":96,"properties":{"weight":157}},{"id":2663,"inV":104,"properties":{"weight":1}},{"id":2664,"inV":26,"properties":{"weight":14}},{"id":2665,"inV":123,"properties":{"weight":3}},{"id":2666,"inV":19,"properties":{"weight":12}},{"id":2667,"inV":100,"properties":{"weight":5}},{"id":2668,"inV":12,"properties":{"weight":3}},{"id":2669,"inV":49,"properties":{"weight":12}},{"id":2670,"inV":21,"properties":{"weight":4}},{"id":2671,"inV":120,"properties":{"weight":9}},{"id":2672,"in
 V":23,"properties":{"weight":5}},{"id":2673,"inV":59,"properties":{"weight":6}},{"id":2674,"inV":54,"properties":{"weight":5}},{"id":2675,"inV":80,"properties":{"weight":1}},{"id":2676,"inV":234,"properties":{"weight":1}},{"id":2677,"inV":53,"properties":{"weight":2}},{"id":2678,"inV":225,"properties":{"weight":1}},{"id":2679,"inV":235,"properties":{"weight":2}},{"id":2680,"inV":160,"properties":{"weight":3}},{"id":2681,"inV":56,"properties":{"weight":3}},{"id":2682,"inV":127,"properties":{"weight":6}},{"id":2683,"inV":18,"properties":{"weight":3}},{"id":2684,"inV":4,"properties":{"weight":9}},{"id":2685,"inV":15,"properties":{"weight":7}},{"id":2686,"inV":74,"properties":{"weight":86}},{"id":2687,"inV":153,"properties":{"weight":12}}],"sungBy":[{"id":7292,"inV":359}],"writtenBy":[{"id":7291,"inV":339}]},"properties":{"name":[{"id":36,"value":"PLAYING IN THE BAND"}],"songType":[{"id":38,"value":"original"}],"performances":[{"id":37,"value":582}]}}
-{"id":14,"label":"song","inE":{"followedBy":[{"id":6784,"outV":39,"properties":{"weight":10}},{"id":5251,"outV":32,"properties":{"weight":1}},{"id":4229,"outV":52,"properties":{"weight":3}},{"id":4745,"outV":294,"properties":{"weight":4}},{"id":10,"outV":9,"properties":{"weight":3}},{"id":6283,"outV":49,"properties":{"weight":2}},{"id":4364,"outV":62,"properties":{"weight":16}},{"id":4109,"outV":48,"properties":{"weight":10}},{"id":6544,"outV":55,"properties":{"weight":1}},{"id":4881,"outV":100,"properties":{"weight":20}},{"id":6034,"outV":115,"properties":{"weight":1}},{"id":3219,"outV":63,"properties":{"weight":2}},{"id":531,"outV":120,"properties":{"weight":1}},{"id":4758,"outV":37,"properties":{"weight":2}},{"id":4247,"outV":10,"properties":{"weight":1}},{"id":4631,"outV":154,"properties":{"weight":6}},{"id":3866,"outV":60,"properties":{"weight":2}},{"id":1947,"outV":148,"properties":{"weight":1}},{"id":1436,"outV":83,"properties":{"weight":7}},{"id":2844,"outV":101,"properties"
 :{"weight":1}},{"id":6685,"outV":12,"properties":{"weight":3}},{"id":1183,"outV":26,"properties":{"weight":2}},{"id":160,"outV":108,"properties":{"weight":2}},{"id":4517,"outV":105,"properties":{"weight":6}},{"id":6954,"outV":84,"properties":{"weight":4}},{"id":1451,"outV":81,"properties":{"weight":12}},{"id":1582,"outV":18,"properties":{"weight":4}},{"id":3892,"outV":51,"properties":{"weight":10}},{"id":2107,"outV":17,"properties":{"weight":19}},{"id":5820,"outV":76,"properties":{"weight":1}},{"id":6463,"outV":187,"properties":{"weight":26}},{"id":1090,"outV":59,"properties":{"weight":7}},{"id":6083,"outV":72,"properties":{"weight":9}},{"id":1731,"outV":82,"properties":{"weight":4}},{"id":4037,"outV":173,"properties":{"weight":1}},{"id":2375,"outV":87,"properties":{"weight":8}},{"id":4169,"outV":54,"properties":{"weight":36}},{"id":5578,"outV":42,"properties":{"weight":1}},{"id":5964,"outV":50,"properties":{"weight":2}},{"id":716,"outV":80,"properties":{"weight":10}},{"id":5709,"ou
 tV":20,"properties":{"weight":1}},{"id":845,"outV":171,"properties":{"weight":11}},{"id":5838,"outV":258,"properties":{"weight":1}},{"id":1232,"outV":248,"properties":{"weight":1}},{"id":6993,"outV":175,"properties":{"weight":1}},{"id":3666,"outV":24,"properties":{"weight":2}},{"id":3796,"outV":88,"properties":{"weight":1}},{"id":3156,"outV":104,"properties":{"weight":6}},{"id":6742,"outV":53,"properties":{"weight":15}},{"id":2523,"outV":57,"properties":{"weight":9}},{"id":864,"outV":189,"properties":{"weight":2}},{"id":3556,"outV":56,"properties":{"weight":21}},{"id":102,"outV":46,"properties":{"weight":1}},{"id":5096,"outV":4,"properties":{"weight":2}},{"id":1257,"outV":27,"properties":{"weight":19}},{"id":489,"outV":98,"properties":{"weight":3}},{"id":2030,"outV":180,"properties":{"weight":2}},{"id":2159,"outV":151,"properties":{"weight":1}},{"id":2803,"outV":15,"properties":{"weight":4}},{"id":2935,"outV":78,"properties":{"weight":1}},{"id":2426,"outV":68,"properties":{"weight":
 4}},{"id":3962,"outV":106,"properties":{"weight":2}},{"id":4474,"outV":202,"properties":{"weight":1}},{"id":123,"outV":97,"properties":{"weight":1}},{"id":5628,"outV":22,"properties":{"weight":1}},{"id":4092,"outV":109,"properties":{"weight":1}},{"id":1021,"outV":73,"properties":{"weight":20}},{"id":3455,"outV":58,"properties":{"weight":12}}]},"outE":{"followedBy":[{"id":2981,"inV":50,"properties":{"weight":2}},{"id":2982,"inV":4,"properties":{"weight":3}},{"id":2983,"inV":53,"properties":{"weight":8}},{"id":2984,"inV":57,"properties":{"weight":55}},{"id":2985,"inV":89,"properties":{"weight":2}},{"id":2986,"inV":122,"properties":{"weight":1}},{"id":2987,"inV":153,"properties":{"weight":1}},{"id":2988,"inV":72,"properties":{"weight":26}},{"id":2989,"inV":19,"properties":{"weight":17}},{"id":2990,"inV":9,"properties":{"weight":4}},{"id":2991,"inV":17,"properties":{"weight":13}},{"id":2992,"inV":46,"properties":{"weight":5}},{"id":2993,"inV":51,"properties":{"weight":15}},{"id":2994,"i
 nV":54,"properties":{"weight":28}},{"id":2995,"inV":202,"properties":{"weight":3}},{"id":2996,"inV":27,"properties":{"weight":6}},{"id":2997,"inV":52,"properties":{"weight":3}},{"id":2998,"inV":58,"properties":{"weight":1}},{"id":2999,"inV":56,"properties":{"weight":8}},{"id":3000,"inV":100,"properties":{"weight":12}},{"id":3001,"inV":99,"properties":{"weight":26}},{"id":3002,"inV":98,"properties":{"weight":3}},{"id":3003,"inV":104,"properties":{"weight":2}},{"id":3004,"inV":82,"properties":{"weight":6}},{"id":3005,"inV":215,"properties":{"weight":1}},{"id":3006,"inV":69,"properties":{"weight":2}},{"id":3007,"inV":103,"properties":{"weight":1}},{"id":3008,"inV":83,"properties":{"weight":8}},{"id":3009,"inV":101,"properties":{"weight":1}},{"id":3010,"inV":80,"properties":{"weight":8}},{"id":3011,"inV":121,"properties":{"weight":3}},{"id":3012,"inV":59,"properties":{"weight":1}},{"id":3013,"inV":26,"properties":{"weight":2}},{"id":3014,"inV":32,"properties":{"weight":2}},{"id":3015,"i
 nV":155,"properties":{"weight":1}},{"id":3016,"inV":42,"properties":{"weight":2}},{"id":3017,"inV":18,"properties":{"weight":1}},{"id":3018,"inV":105,"properties":{"weight":11}},{"id":3019,"inV":12,"properties":{"weight":1}},{"id":3020,"inV":49,"properties":{"weight":27}},{"id":3021,"inV":65,"properties":{"weight":2}},{"id":3022,"inV":85,"properties":{"weight":2}},{"id":3023,"inV":73,"properties":{"weight":8}},{"id":3024,"inV":106,"properties":{"weight":3}},{"id":3025,"inV":189,"properties":{"weight":3}},{"id":3026,"inV":10,"properties":{"weight":1}},{"id":3027,"inV":210,"properties":{"weight":3}},{"id":3028,"inV":76,"properties":{"weight":1}},{"id":3029,"inV":87,"properties":{"weight":1}},{"id":3030,"inV":96,"properties":{"weight":1}},{"id":3031,"inV":150,"properties":{"weight":1}},{"id":3032,"inV":66,"properties":{"weight":1}},{"id":3033,"inV":5,"properties":{"weight":1}},{"id":3034,"inV":91,"properties":{"weight":29}},{"id":3035,"inV":60,"properties":{"weight":6}},{"id":3036,"inV
 ":67,"properties":{"weight":1}},{"id":3037,"inV":74,"properties":{"weight":1}},{"id":3038,"inV":21,"properties":{"weight":1}},{"id":3039,"inV":169,"properties":{"weight":1}},{"id":3040,"inV":62,"properties":{"weight":1}},{"id":3041,"inV":39,"properties":{"weight":2}},{"id":3042,"inV":175,"properties":{"weight":1}},{"id":3043,"inV":172,"properties":{"weight":1}},{"id":3044,"inV":28,"properties":{"weight":5}},{"id":3045,"inV":173,"properties":{"weight":1}},{"id":3046,"inV":37,"properties":{"weight":5}},{"id":3047,"inV":35,"properties":{"weight":2}}],"sungBy":[{"id":7232,"inV":351}],"writtenBy":[{"id":7231,"inV":350}]},"properties":{"name":[{"id":39,"value":"LOOKS LIKE RAIN"}],"songType":[{"id":41,"value":"original"}],"performances":[{"id":40,"value":417}]}}
-{"id":15,"label":"song","inE":{"followedBy":[{"id":1152,"outV":26,"properties":{"weight":1}},{"id":769,"outV":122,"properties":{"weight":3}},{"id":5379,"outV":69,"properties":{"weight":4}},{"id":3844,"outV":60,"properties":{"weight":2}},{"id":1414,"outV":83,"properties":{"weight":2}},{"id":6663,"outV":12,"properties":{"weight":167}},{"id":4872,"outV":100,"properties":{"weight":9}},{"id":4105,"outV":48,"properties":{"weight":4}},{"id":11,"outV":9,"properties":{"weight":3}},{"id":4622,"outV":154,"properties":{"weight":1}},{"id":2833,"outV":101,"properties":{"weight":1}},{"id":2195,"outV":235,"properties":{"weight":1}},{"id":5141,"outV":125,"properties":{"weight":2}},{"id":3224,"outV":63,"properties":{"weight":2}},{"id":1945,"outV":148,"properties":{"weight":2}},{"id":5024,"outV":30,"properties":{"weight":2}},{"id":2597,"outV":112,"properties":{"weight":35}},{"id":1062,"outV":73,"properties":{"weight":1}},{"id":5032,"outV":47,"properties":{"weight":1}},{"id":4776,"outV":114,"properties
 ":{"weight":1}},{"id":6698,"outV":141,"properties":{"weight":1}},{"id":3885,"outV":51,"properties":{"weight":14}},{"id":1712,"outV":82,"properties":{"weight":4}},{"id":5301,"outV":170,"properties":{"weight":1}},{"id":1847,"outV":94,"properties":{"weight":6}},{"id":4153,"outV":54,"properties":{"weight":7}},{"id":1339,"outV":31,"properties":{"weight":2}},{"id":6075,"outV":72,"properties":{"weight":4}},{"id":2108,"outV":17,"properties":{"weight":8}},{"id":60,"outV":46,"properties":{"weight":1}},{"id":6460,"outV":187,"properties":{"weight":10}},{"id":3653,"outV":24,"properties":{"weight":14}},{"id":6731,"outV":53,"properties":{"weight":1}},{"id":3147,"outV":104,"properties":{"weight":2}},{"id":1101,"outV":59,"properties":{"weight":2}},{"id":4052,"outV":173,"properties":{"weight":1}},{"id":2518,"outV":57,"properties":{"weight":5}},{"id":476,"outV":98,"properties":{"weight":3}},{"id":1372,"outV":130,"properties":{"weight":1}},{"id":5085,"outV":4,"properties":{"weight":1}},{"id":1245,"outV
 ":27,"properties":{"weight":5}},{"id":2272,"outV":25,"properties":{"weight":4}},{"id":4577,"outV":254,"properties":{"weight":1}},{"id":5735,"outV":129,"properties":{"weight":2}},{"id":3432,"outV":58,"properties":{"weight":7}},{"id":3562,"outV":56,"properties":{"weight":6}},{"id":746,"outV":80,"properties":{"weight":1}},{"id":2411,"outV":68,"properties":{"weight":1}},{"id":2924,"outV":78,"properties":{"weight":3}},{"id":4467,"outV":202,"properties":{"weight":6}},{"id":376,"outV":74,"properties":{"weight":1}},{"id":5242,"outV":32,"properties":{"weight":2}},{"id":6267,"outV":49,"properties":{"weight":1}},{"id":2685,"outV":13,"properties":{"weight":7}}]},"outE":{"followedBy":[{"id":2816,"inV":103,"properties":{"weight":1}},{"id":2817,"inV":62,"properties":{"weight":1}},{"id":2818,"inV":64,"properties":{"weight":1}},{"id":2819,"inV":75,"properties":{"weight":3}},{"id":2820,"inV":152,"properties":{"weight":1}},{"id":2821,"inV":117,"properties":{"weight":1}},{"id":2822,"inV":168,"propertie
 s":{"weight":1}},{"id":2823,"inV":188,"properties":{"weight":1}},{"id":2824,"inV":131,"properties":{"weight":4}},{"id":2825,"inV":28,"properties":{"weight":1}},{"id":2826,"inV":124,"properties":{"weight":1}},{"id":2827,"inV":190,"properties":{"weight":1}},{"id":2828,"inV":137,"properties":{"weight":1}},{"id":2755,"inV":19,"properties":{"weight":8}},{"id":2756,"inV":56,"properties":{"weight":22}},{"id":2757,"inV":104,"properties":{"weight":17}},{"id":2758,"inV":49,"properties":{"weight":4}},{"id":2759,"inV":122,"properties":{"weight":3}},{"id":2760,"inV":23,"properties":{"weight":2}},{"id":2761,"inV":27,"properties":{"weight":23}},{"id":2762,"inV":89,"properties":{"weight":7}},{"id":2763,"inV":46,"properties":{"weight":1}},{"id":2764,"inV":57,"properties":{"weight":7}},{"id":2765,"inV":59,"properties":{"weight":6}},{"id":2766,"inV":58,"properties":{"weight":18}},{"id":2767,"inV":54,"properties":{"weight":25}},{"id":2768,"inV":100,"properties":{"weight":24}},{"id":2769,"inV":39,"prope
 rties":{"weight":3}},{"id":2770,"inV":160,"properties":{"weight":5}},{"id":2771,"inV":13,"properties":{"weight":3}},{"id":2772,"inV":51,"properties":{"weight":14}},{"id":2773,"inV":94,"properties":{"weight":4}},{"id":2774,"inV":148,"properties":{"weight":1}},{"id":2775,"inV":9,"properties":{"weight":5}},{"id":2776,"inV":48,"properties":{"weight":17}},{"id":2777,"inV":55,"properties":{"weight":1}},{"id":2778,"inV":72,"properties":{"weight":3}},{"id":2779,"inV":52,"properties":{"weight":1}},{"id":2780,"inV":12,"properties":{"weight":3}},{"id":2781,"inV":4,"properties":{"weight":4}},{"id":2782,"inV":83,"properties":{"weight":2}},{"id":2783,"inV":202,"properties":{"weight":6}},{"id":2784,"inV":82,"properties":{"weight":3}},{"id":2785,"inV":74,"properties":{"weight":1}},{"id":2786,"inV":69,"properties":{"weight":7}},{"id":2787,"inV":98,"properties":{"weight":10}},{"id":2788,"inV":21,"properties":{"weight":1}},{"id":2789,"inV":125,"properties":{"weight":1}},{"id":2790,"inV":170,"propertie
 s":{"weight":3}},{"id":2791,"inV":26,"properties":{"weight":1}},{"id":2792,"inV":60,"properties":{"weight":1}},{"id":2793,"inV":294,"properties":{"weight":2}},{"id":2794,"inV":99,"properties":{"weight":3}},{"id":2795,"inV":17,"properties":{"weight":10}},{"id":2796,"inV":63,"properties":{"weight":5}},{"id":2797,"inV":68,"properties":{"weight":3}},{"id":2798,"inV":108,"properties":{"weight":6}},{"id":2799,"inV":109,"properties":{"weight":1}},{"id":2800,"inV":196,"properties":{"weight":3}},{"id":2801,"inV":91,"properties":{"weight":1}},{"id":2802,"inV":18,"properties":{"weight":1}},{"id":2803,"inV":14,"properties":{"weight":4}},{"id":2804,"inV":105,"properties":{"weight":8}},{"id":2805,"inV":101,"properties":{"weight":2}},{"id":2806,"inV":10,"properties":{"weight":2}},{"id":2807,"inV":73,"properties":{"weight":26}},{"id":2808,"inV":78,"properties":{"weight":1}},{"id":2809,"inV":32,"properties":{"weight":3}},{"id":2810,"inV":106,"properties":{"weight":2}},{"id":2811,"inV":180,"propertie
 s":{"weight":2}},{"id":2812,"inV":88,"properties":{"weight":1}},{"id":2813,"inV":97,"properties":{"weight":1}},{"id":2814,"inV":53,"properties":{"weight":3}},{"id":2815,"inV":115,"properties":{"weight":4}}],"sungBy":[{"id":7472,"inV":351}],"writtenBy":[{"id":7471,"inV":479}]},"properties":{"name":[{"id":42,"value":"BIG RIVER"}],"songType":[{"id":44,"value":"cover"}],"performances":[{"id":43,"value":397}]}}
-{"id":16,"label":"song","inE":{"followedBy":[{"id":7008,"outV":89,"properties":{"weight":1}},{"id":6467,"outV":187,"properties":{"weight":1}},{"id":6341,"outV":21,"properties":{"weight":1}},{"id":5637,"outV":22,"properties":{"weight":3}},{"id":4101,"outV":48,"properties":{"weight":1}},{"id":5382,"outV":69,"properties":{"weight":4}},{"id":6537,"outV":55,"properties":{"weight":1}},{"id":3273,"outV":160,"properties":{"weight":2}},{"id":3882,"outV":51,"properties":{"weight":12}},{"id":12,"outV":9,"properties":{"weight":1}},{"id":1260,"outV":27,"properties":{"weight":1}},{"id":4172,"outV":54,"properties":{"weight":1}},{"id":6285,"outV":49,"properties":{"weight":1}},{"id":368,"outV":74,"properties":{"weight":1}},{"id":4464,"outV":202,"properties":{"weight":1}},{"id":468,"outV":195,"properties":{"weight":3}},{"id":5303,"outV":170,"properties":{"weight":2}},{"id":472,"outV":98,"properties":{"weight":2}},{"id":5081,"outV":4,"properties":{"weight":2}},{"id":2521,"outV":57,"properties":{"weigh
 t":1}},{"id":5146,"outV":125,"properties":{"weight":1}},{"id":1405,"outV":83,"properties":{"weight":5}},{"id":1854,"outV":94,"properties":{"weight":2}},{"id":1950,"outV":148,"properties":{"weight":1}}]},"outE":{"followedBy":[{"id":2169,"inV":25,"properties":{"weight":1}},{"id":2170,"inV":101,"properties":{"weight":46}},{"id":2171,"inV":89,"properties":{"weight":2}},{"id":2172,"inV":130,"properties":{"weight":1}},{"id":2173,"inV":83,"properties":{"weight":1}}]},"properties":{"name":[{"id":45,"value":"WEATHER REPORT SUITE"}],"songType":[{"id":47,"value":""}],"performances":[{"id":46,"value":0}]}}
-{"id":17,"label":"song","inE":{"followedBy":[{"id":5955,"outV":50,"properties":{"weight":43}},{"id":5702,"outV":20,"properties":{"weight":2}},{"id":2696,"outV":13,"properties":{"weight":2}},{"id":6538,"outV":55,"properties":{"weight":1}},{"id":1163,"outV":26,"properties":{"weight":34}},{"id":13,"outV":9,"properties":{"weight":1}},{"id":402,"outV":38,"properties":{"weight":12}},{"id":6675,"outV":12,"properties":{"weight":3}},{"id":5011,"outV":30,"properties":{"weight":3}},{"id":1877,"outV":103,"properties":{"weight":2}},{"id":2522,"outV":57,"properties":{"weight":1}},{"id":3803,"outV":88,"properties":{"weight":4}},{"id":475,"outV":98,"properties":{"weight":1}},{"id":3996,"outV":106,"properties":{"weight":1}},{"id":2588,"outV":112,"properties":{"weight":3}},{"id":540,"outV":120,"properties":{"weight":1}},{"id":990,"outV":11,"properties":{"weight":3}},{"id":1570,"outV":18,"properties":{"weight":6}},{"id":2275,"outV":25,"properties":{"weight":1}},{"id":4262,"outV":10,"properties":{"weig
 ht":5}},{"id":2795,"outV":15,"properties":{"weight":10}},{"id":6955,"outV":84,"properties":{"weight":1}},{"id":2413,"outV":68,"properties":{"weight":9}},{"id":4077,"outV":109,"properties":{"weight":1}},{"id":2991,"outV":14,"properties":{"weight":13}},{"id":4912,"outV":100,"properties":{"weight":1}},{"id":3639,"outV":24,"properties":{"weight":13}},{"id":6583,"outV":116,"properties":{"weight":1}},{"id":58,"outV":46,"properties":{"weight":2}},{"id":635,"outV":23,"properties":{"weight":16}},{"id":5244,"outV":32,"properties":{"weight":19}},{"id":2942,"outV":78,"properties":{"weight":1}},{"id":6847,"outV":64,"properties":{"weight":7}}]},"outE":{"followedBy":[{"id":2112,"inV":24,"properties":{"weight":9}},{"id":2113,"inV":21,"properties":{"weight":1}},{"id":2114,"inV":46,"properties":{"weight":1}},{"id":2115,"inV":20,"properties":{"weight":2}},{"id":2116,"inV":10,"properties":{"weight":7}},{"id":2117,"inV":68,"properties":{"weight":25}},{"id":2118,"inV":32,"properties":{"weight":19}},{"id"
 :2119,"inV":103,"properties":{"weight":3}},{"id":2120,"inV":121,"properties":{"weight":3}},{"id":2121,"inV":112,"properties":{"weight":31}},{"id":2122,"inV":85,"properties":{"weight":1}},{"id":2123,"inV":101,"properties":{"weight":1}},{"id":2124,"inV":109,"properties":{"weight":1}},{"id":2125,"inV":73,"properties":{"weight":1}},{"id":2126,"inV":88,"properties":{"weight":8}},{"id":2127,"inV":111,"properties":{"weight":3}},{"id":2128,"inV":54,"properties":{"weight":2}},{"id":2129,"inV":97,"properties":{"weight":2}},{"id":2130,"inV":100,"properties":{"weight":1}},{"id":2131,"inV":42,"properties":{"weight":1}},{"id":2132,"inV":58,"properties":{"weight":2}},{"id":2133,"inV":244,"properties":{"weight":1}},{"id":2134,"inV":56,"properties":{"weight":1}},{"id":2135,"inV":63,"properties":{"weight":1}},{"id":2136,"inV":188,"properties":{"weight":2}},{"id":2137,"inV":71,"properties":{"weight":1}},{"id":2138,"inV":30,"properties":{"weight":2}},{"id":2139,"inV":31,"properties":{"weight":1}},{"id"
 :2140,"inV":77,"properties":{"weight":2}},{"id":2141,"inV":40,"properties":{"weight":1}},{"id":2142,"inV":33,"properties":{"weight":1}},{"id":2103,"inV":18,"properties":{"weight":17}},{"id":2104,"inV":39,"properties":{"weight":2}},{"id":2105,"inV":22,"properties":{"weight":4}},{"id":2106,"inV":50,"properties":{"weight":6}},{"id":2107,"inV":14,"properties":{"weight":19}},{"id":2108,"inV":15,"properties":{"weight":8}},{"id":2109,"inV":12,"properties":{"weight":24}},{"id":2110,"inV":23,"properties":{"weight":2}},{"id":2111,"inV":13,"properties":{"weight":4}}],"sungBy":[{"id":7364,"inV":340}],"writtenBy":[{"id":7363,"inV":339}]},"properties":{"name":[{"id":48,"value":"THEY LOVE EACH OTHER"}],"songType":[{"id":50,"value":"original"}],"performances":[{"id":49,"value":227}]}}
-{"id":18,"label":"song","inE":{"followedBy":[{"id":1024,"outV":73,"properties":{"weight":4}},{"id":4097,"outV":48,"properties":{"weight":13}},{"id":6276,"outV":49,"properties":{"weight":2}},{"id":2309,"outV":25,"properties":{"weight":1}},{"id":3333,"outV":155,"properties":{"weight":1}},{"id":4231,"outV":52,"properties":{"weight":1}},{"id":4360,"outV":62,"properties":{"weight":1}},{"id":5257,"outV":32,"properties":{"weight":3}},{"id":3849,"outV":60,"properties":{"weight":1}},{"id":5385,"outV":69,"properties":{"weight":2}},{"id":2189,"outV":235,"properties":{"weight":1}},{"id":14,"outV":9,"properties":{"weight":5}},{"id":654,"outV":23,"properties":{"weight":1}},{"id":5010,"outV":30,"properties":{"weight":2}},{"id":6546,"outV":55,"properties":{"weight":1}},{"id":4885,"outV":100,"properties":{"weight":11}},{"id":1814,"outV":273,"properties":{"weight":1}},{"id":1943,"outV":148,"properties":{"weight":1}},{"id":5145,"outV":125,"properties":{"weight":1}},{"id":6688,"outV":12,"properties":{"
 weight":1}},{"id":4642,"outV":154,"properties":{"weight":3}},{"id":4260,"outV":10,"properties":{"weight":3}},{"id":2852,"outV":101,"properties":{"weight":1}},{"id":3238,"outV":63,"properties":{"weight":1}},{"id":6695,"outV":141,"properties":{"weight":1}},{"id":3880,"outV":51,"properties":{"weight":12}},{"id":1193,"outV":26,"properties":{"weight":1}},{"id":425,"outV":38,"properties":{"weight":2}},{"id":2601,"outV":112,"properties":{"weight":1}},{"id":4524,"outV":105,"properties":{"weight":3}},{"id":45,"outV":46,"properties":{"weight":3}},{"id":4015,"outV":292,"properties":{"weight":1}},{"id":560,"outV":120,"properties":{"weight":1}},{"id":6579,"outV":116,"properties":{"weight":1}},{"id":5299,"outV":170,"properties":{"weight":3}},{"id":4404,"outV":40,"properties":{"weight":1}},{"id":1716,"outV":82,"properties":{"weight":3}},{"id":5429,"outV":315,"properties":{"weight":1}},{"id":4150,"outV":218,"properties":{"weight":1}

<TRUNCATED>

[18/19] tinkerpop git commit: Moved upgrade docs for GraphSON 2.0 out of 3.2.1 to 3.2.2. CTR

Posted by sp...@apache.org.
Moved upgrade docs for GraphSON 2.0 out of 3.2.1 to 3.2.2. CTR


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/47106901
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/47106901
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/47106901

Branch: refs/heads/master
Commit: 47106901baaee30dee3af309b9b2d8859daed338
Parents: de139ed
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Aug 22 13:00:45 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Aug 22 13:00:45 2016 -0400

----------------------------------------------------------------------
 .../upgrade/release-3.2.x-incubating.asciidoc   | 44 +++++++++++---------
 1 file changed, 24 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/47106901/docs/src/upgrade/release-3.2.x-incubating.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade/release-3.2.x-incubating.asciidoc b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
index bf29feb..77333d4 100644
--- a/docs/src/upgrade/release-3.2.x-incubating.asciidoc
+++ b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
@@ -32,6 +32,15 @@ Please see the link:https://github.com/apache/tinkerpop/blob/3.2.2/CHANGELOG.asc
 Upgrading for Users
 ~~~~~~~~~~~~~~~~~~~
 
+GraphSON 2.0
+^^^^^^^^^^^^
+
+GraphSON 2.0 has been introduced to improve and normalize the format of types embedded in GraphSON.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1274[TINKERPOP-1274],
+link:http://tinkerpop.apache.org/docs/3.2.1-incubating/reference/#graphson-2.0-types[Reference Documentation -
+GraphSON 2.0].
+
 Log4j Dependencies
 ^^^^^^^^^^^^^^^^^^
 
@@ -83,6 +92,21 @@ dependending on `gremlin-test` (or `gremlin-groovy-test`) will need to explicitl
 
 See: link:https://issues.apache.org/jira/browse/TINKERPOP-1151[TINKERPOP-1151]
 
+Graph Drivers Providers
+^^^^^^^^^^^^^^^^^^^^^^
+
+GraphSON 2.0
+++++++++++++
+
+Drivers providers can exploit the new format of typed values JSON serialization offered by GraphSON 2.0. This format
+has been created to allow easy and agnostic parsing of a GraphSON payload without type loss. Drivers of non-Java
+languages can then implement their own mapping of the GraphSON's language agnostic type IDs (e.g. `UUID`, `LocalDate`)
+to the appropriate representation for the driver's language.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1274[TINKERPOP-1274],
+link:http://tinkerpop.apache.org/docs/3.2.1-incubating/reference/#graphson-2.0-types[Reference Documentation -
+GraphSON 2.0].
+
 TinkerPop 3.2.1
 ---------------
 
@@ -93,13 +117,6 @@ Please see the link:https://github.com/apache/tinkerpop/blob/3.2.1/CHANGELOG.asc
 Upgrading for Users
 ~~~~~~~~~~~~~~~~~~~
 
-GraphSON 2.0
-^^^^^^^^^^^^
-
-GraphSON 2.0 has been introduced to improve and normalize the format of types embedding in GraphSON. Please see
-link:http://tinkerpop.apache.org/docs/3.2.1-incubating/reference/#graphson-2.0-types[Reference Documentation -
-GraphSON 2.0] and link:https://issues.apache.org/jira/browse/TINKERPOP-1274[TINKERPOP-1274].
-
 Gephi Plugin
 ^^^^^^^^^^^^
 
@@ -275,19 +292,6 @@ VertexTest Signatures
 The method signatures of `get_g_VXlistXv1_v2_v3XX_name` and `get_g_VXlistX1_2_3XX_name` of `VertexTest` were changed
 to take arguments for the `Traversal` to be constructed by extending classes.
 
-Graph Drivers Providers
-^^^^^^^^^^^^^^^^^^^^^^
-
-GraphSON 2.0
-++++++++++++
-
-Drivers providers can exploit the new format of typed values JSON serialization offered by GraphSON 2.0. This format
-has been created to allow easy and agnostic parsing of a GraphSON payload without type loss. Drivers of non Java
-languages can then implement their own mapping of the GraphSON's language agnostic type IDs like `UUID`, `LocalDate` to
-the appropriate representation for the driver's language. A more detailed description of GraphSON 2.0 can be found
-there : link:http://tinkerpop.apache.org/docs/3.2.1-incubating/reference/#graphson-2.0-types[Reference Documentation
-- GraphSON 2.0]
-
 TinkerPop 3.2.0
 ---------------