You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ke...@apache.org on 2024/07/23 17:29:02 UTC

(tinkerpop) 01/01: Update tests to reflect v4 serialization types

This is an automated email from the ASF dual-hosted git repository.

kenhuuu pushed a commit to branch v4-io-test
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 14bc366f815d587deb32389a3b4e74010aacdfc6
Author: Ken Hu <10...@users.noreply.github.com>
AuthorDate: Tue Jul 23 10:14:49 2024 -0700

    Update tests to reflect v4 serialization types
---
 .../structure/graphbinary/bulked-traverser-v4.gbin | Bin 0 -> 81 bytes
 .../structure/graphbinary/edge-property-v4.gbin    | Bin 0 -> 19 bytes
 .../structure/graphbinary/empty-binary-v4.gbin     | Bin 0 -> 6 bytes
 .../structure/graphbinary/empty-bulkset-v4.gbin    | Bin 0 -> 6 bytes
 .../structure/graphbinary/empty-list-v4.gbin       | Bin 0 -> 6 bytes
 .../structure/graphbinary/empty-map-v4.gbin        | Bin 0 -> 6 bytes
 .../structure/graphbinary/empty-path-v4.gbin       | Bin 0 -> 14 bytes
 .../structure/graphbinary/empty-set-v4.gbin        | Bin 0 -> 6 bytes
 .../structure/graphbinary/empty-traverser-v4.gbin  | Bin 0 -> 12 bytes
 .../structure/graphbinary/forever-duration-v4.gbin | Bin 0 -> 14 bytes
 .../gremlin/structure/graphbinary/max-byte-v4.gbin | Bin 0 -> 3 bytes
 .../gremlin/structure/graphbinary/max-date-v4.gbin | Bin 0 -> 10 bytes
 .../structure/graphbinary/max-double-v4.gbin       | Bin 0 -> 10 bytes
 .../structure/graphbinary/max-float-v4.gbin        | Bin 0 -> 6 bytes
 .../gremlin/structure/graphbinary/max-int-v4.gbin  | Bin 0 -> 6 bytes
 .../gremlin/structure/graphbinary/max-long-v4.gbin | Bin 0 -> 10 bytes
 .../graphbinary/max-offsetdatetime-v4.gbin         | Bin 0 -> 20 bytes
 .../structure/graphbinary/max-short-v4.gbin        | Bin 0 -> 4 bytes
 .../graphbinary/meta-vertexproperty-v4.gbin        | Bin 0 -> 55 bytes
 .../gremlin/structure/graphbinary/min-byte-v4.gbin | Bin 0 -> 3 bytes
 .../gremlin/structure/graphbinary/min-date-v4.gbin | Bin 0 -> 10 bytes
 .../structure/graphbinary/min-double-v4.gbin       | Bin 0 -> 10 bytes
 .../structure/graphbinary/min-float-v4.gbin        | Bin 0 -> 6 bytes
 .../gremlin/structure/graphbinary/min-int-v4.gbin  | Bin 0 -> 6 bytes
 .../gremlin/structure/graphbinary/min-long-v4.gbin | Bin 0 -> 10 bytes
 .../graphbinary/min-offsetdatetime-v4.gbin         | Bin 0 -> 20 bytes
 .../structure/graphbinary/min-short-v4.gbin        | Bin 0 -> 4 bytes
 .../structure/graphbinary/nan-double-v4.gbin       | Bin 0 -> 10 bytes
 .../structure/graphbinary/nan-float-v4.gbin        | Bin 0 -> 6 bytes
 .../structure/graphbinary/neg-bigdecimal-v4.gbin   | Bin 0 -> 25 bytes
 .../structure/graphbinary/neg-biginteger-v4.gbin   | Bin 0 -> 21 bytes
 .../structure/graphbinary/neg-inf-double-v4.gbin   | Bin 0 -> 10 bytes
 .../structure/graphbinary/neg-inf-float-v4.gbin    | Bin 0 -> 6 bytes
 .../structure/graphbinary/neg-max-double-v4.gbin   | Bin 0 -> 10 bytes
 .../structure/graphbinary/neg-max-float-v4.gbin    | Bin 0 -> 6 bytes
 .../structure/graphbinary/neg-min-double-v4.gbin   | Bin 0 -> 10 bytes
 .../structure/graphbinary/neg-min-float-v4.gbin    | Bin 0 -> 6 bytes
 .../gremlin/structure/graphbinary/nil-uuid-v4.gbin | Bin 0 -> 18 bytes
 .../structure/graphbinary/no-prop-edge-v4.gbin     | Bin 0 -> 62 bytes
 .../structure/graphbinary/no-prop-vertex-v4.gbin   | Bin 0 -> 24 bytes
 .../structure/graphbinary/null-property-v4.gbin    | Bin 0 -> 10 bytes
 .../structure/graphbinary/pos-bigdecimal-v4.gbin   | Bin 0 -> 25 bytes
 .../structure/graphbinary/pos-biginteger-v4.gbin   | Bin 0 -> 21 bytes
 .../structure/graphbinary/pos-inf-double-v4.gbin   | Bin 0 -> 10 bytes
 .../structure/graphbinary/pos-inf-float-v4.gbin    | Bin 0 -> 6 bytes
 .../structure/graphbinary/prop-path-v4.gbin        | Bin 0 -> 575 bytes
 .../set-cardinality-vertexproperty-v4.gbin         | Bin 0 -> 72 bytes
 .../structure/graphbinary/specified-uuid-v4.gbin   | Bin 0 -> 18 bytes
 .../structure/graphbinary/str-binary-v4.gbin       | Bin 0 -> 24 bytes
 .../structure/graphbinary/tinker-graph-v4.gbin     | Bin 0 -> 2264 bytes
 .../structure/graphbinary/traversal-edge-v4.gbin   | Bin 0 -> 81 bytes
 .../structure/graphbinary/traversal-path-v4.gbin   | Bin 0 -> 575 bytes
 .../structure/graphbinary/traversal-vertex-v4.gbin | Bin 0 -> 405 bytes
 .../graphbinary/traversal-vertexproperty-v4.gbin   | Bin 0 -> 39 bytes
 .../structure/graphbinary/var-bulkset-v4.gbin      | Bin 0 -> 43 bytes
 .../structure/graphbinary/var-type-list-v4.gbin    | Bin 0 -> 29 bytes
 .../structure/graphbinary/var-type-map-v4.gbin     | Bin 0 -> 79 bytes
 .../structure/graphbinary/var-type-set-v4.gbin     | Bin 0 -> 29 bytes
 .../structure/graphbinary/vertex-traverser-v4.gbin | Bin 0 -> 415 bytes
 .../structure/graphbinary/zero-date-v4.gbin        | Bin 0 -> 10 bytes
 .../structure/graphbinary/zero-duration-v4.gbin    | Bin 0 -> 14 bytes
 .../graphson/bulked-traverser-v4-no-types.json     |  14 +
 .../structure/graphson/bulked-traverser-v4.json    |  32 +
 .../graphson/edge-property-v4-no-types.json        |   4 +
 .../structure/graphson/edge-property-v4.json       |  10 +
 .../graphson/empty-binary-v4-no-types.json         |   1 +
 .../structure/graphson/empty-binary-v4.json        |   4 +
 .../graphson/empty-bulkset-v4-no-types.json        |   1 +
 .../structure/graphson/empty-bulkset-v4.json       |   4 +
 .../structure/graphson/empty-list-v4-no-types.json |   1 +
 .../gremlin/structure/graphson/empty-list-v4.json  |   4 +
 .../structure/graphson/empty-map-v4-no-types.json  |   1 +
 .../gremlin/structure/graphson/empty-map-v4.json   |   4 +
 .../structure/graphson/empty-path-v4-no-types.json |   4 +
 .../gremlin/structure/graphson/empty-path-v4.json  |  13 +
 .../structure/graphson/empty-set-v4-no-types.json  |   1 +
 .../gremlin/structure/graphson/empty-set-v4.json   |   4 +
 .../graphson/empty-traverser-v4-no-types.json      |   4 +
 .../structure/graphson/empty-traverser-v4.json     |  10 +
 .../graphson/forever-duration-v4-no-types.json     |   1 +
 .../structure/graphson/forever-duration-v4.json    |   4 +
 .../structure/graphson/max-byte-v4-no-types.json   |   1 +
 .../gremlin/structure/graphson/max-byte-v4.json    |   4 +
 .../structure/graphson/max-date-v4-no-types.json   |   1 +
 .../gremlin/structure/graphson/max-date-v4.json    |   4 +
 .../structure/graphson/max-double-v4-no-types.json |   1 +
 .../gremlin/structure/graphson/max-double-v4.json  |   4 +
 .../structure/graphson/max-float-v4-no-types.json  |   1 +
 .../gremlin/structure/graphson/max-float-v4.json   |   4 +
 .../structure/graphson/max-int-v4-no-types.json    |   1 +
 .../gremlin/structure/graphson/max-int-v4.json     |   4 +
 .../structure/graphson/max-long-v4-no-types.json   |   1 +
 .../gremlin/structure/graphson/max-long-v4.json    |   4 +
 .../graphson/max-offsetdatetime-v4-no-types.json   |   1 +
 .../structure/graphson/max-offsetdatetime-v4.json  |   4 +
 .../structure/graphson/max-short-v4-no-types.json  |   1 +
 .../gremlin/structure/graphson/max-short-v4.json   |   4 +
 .../graphson/meta-vertexproperty-v4-no-types.json  |   8 +
 .../structure/graphson/meta-vertexproperty-v4.json |  14 +
 .../structure/graphson/min-byte-v4-no-types.json   |   1 +
 .../gremlin/structure/graphson/min-byte-v4.json    |   4 +
 .../structure/graphson/min-date-v4-no-types.json   |   1 +
 .../gremlin/structure/graphson/min-date-v4.json    |   4 +
 .../structure/graphson/min-double-v4-no-types.json |   1 +
 .../gremlin/structure/graphson/min-double-v4.json  |   4 +
 .../structure/graphson/min-float-v4-no-types.json  |   1 +
 .../gremlin/structure/graphson/min-float-v4.json   |   4 +
 .../structure/graphson/min-int-v4-no-types.json    |   1 +
 .../gremlin/structure/graphson/min-int-v4.json     |   4 +
 .../structure/graphson/min-long-v4-no-types.json   |   1 +
 .../gremlin/structure/graphson/min-long-v4.json    |   4 +
 .../graphson/min-offsetdatetime-v4-no-types.json   |   1 +
 .../structure/graphson/min-offsetdatetime-v4.json  |   4 +
 .../structure/graphson/min-short-v4-no-types.json  |   1 +
 .../gremlin/structure/graphson/min-short-v4.json   |   4 +
 .../structure/graphson/nan-double-v4-no-types.json |   1 +
 .../gremlin/structure/graphson/nan-double-v4.json  |   4 +
 .../structure/graphson/nan-float-v4-no-types.json  |   1 +
 .../gremlin/structure/graphson/nan-float-v4.json   |   4 +
 .../graphson/neg-bigdecimal-v4-no-types.json       |   1 +
 .../structure/graphson/neg-bigdecimal-v4.json      |   4 +
 .../graphson/neg-biginteger-v4-no-types.json       |   1 +
 .../structure/graphson/neg-biginteger-v4.json      |   4 +
 .../graphson/neg-inf-double-v4-no-types.json       |   1 +
 .../structure/graphson/neg-inf-double-v4.json      |   4 +
 .../graphson/neg-inf-float-v4-no-types.json        |   1 +
 .../structure/graphson/neg-inf-float-v4.json       |   4 +
 .../graphson/neg-max-double-v4-no-types.json       |   1 +
 .../structure/graphson/neg-max-double-v4.json      |   4 +
 .../graphson/neg-max-float-v4-no-types.json        |   1 +
 .../structure/graphson/neg-max-float-v4.json       |   4 +
 .../graphson/neg-min-double-v4-no-types.json       |   1 +
 .../structure/graphson/neg-min-double-v4.json      |   4 +
 .../graphson/neg-min-float-v4-no-types.json        |   1 +
 .../structure/graphson/neg-min-float-v4.json       |   4 +
 .../structure/graphson/nil-uuid-v4-no-types.json   |   1 +
 .../gremlin/structure/graphson/nil-uuid-v4.json    |   4 +
 .../graphson/no-prop-edge-v4-no-types.json         |   9 +
 .../structure/graphson/no-prop-edge-v4.json        |  20 +
 .../graphson/no-prop-vertex-v4-no-types.json       |   5 +
 .../structure/graphson/no-prop-vertex-v4.json      |  10 +
 .../graphson/null-property-v4-no-types.json        |   4 +
 .../structure/graphson/null-property-v4.json       |   7 +
 .../graphson/pos-bigdecimal-v4-no-types.json       |   1 +
 .../structure/graphson/pos-bigdecimal-v4.json      |   4 +
 .../graphson/pos-biginteger-v4-no-types.json       |   1 +
 .../structure/graphson/pos-biginteger-v4.json      |   4 +
 .../graphson/pos-inf-double-v4-no-types.json       |   1 +
 .../structure/graphson/pos-inf-double-v4.json      |   4 +
 .../graphson/pos-inf-float-v4-no-types.json        |   1 +
 .../structure/graphson/pos-inf-float-v4.json       |   4 +
 .../structure/graphson/prop-path-v4-no-types.json  |  62 ++
 .../gremlin/structure/graphson/prop-path-v4.json   | 165 ++++
 ...set-cardinality-vertexproperty-v4-no-types.json |   8 +
 .../set-cardinality-vertexproperty-v4.json         |  17 +
 .../graphson/specified-uuid-v4-no-types.json       |   1 +
 .../structure/graphson/specified-uuid-v4.json      |   4 +
 .../structure/graphson/str-binary-v4-no-types.json |   1 +
 .../gremlin/structure/graphson/str-binary-v4.json  |   4 +
 .../graphson/tinker-graph-v4-no-types.json         | 313 ++++++++
 .../structure/graphson/tinker-graph-v4.json        | 829 +++++++++++++++++++++
 .../graphson/traversal-edge-v4-no-types.json       |  12 +
 .../structure/graphson/traversal-edge-v4.json      |  32 +
 .../graphson/traversal-path-v4-no-types.json       |  16 +
 .../structure/graphson/traversal-path-v4.json      |  49 ++
 .../graphson/traversal-vertex-v4-no-types.json     |  39 +
 .../structure/graphson/traversal-vertex-v4.json    | 100 +++
 .../traversal-vertexproperty-v4-no-types.json      |   5 +
 .../graphson/traversal-vertexproperty-v4.json      |  11 +
 .../graphson/var-bulkset-v4-no-types.json          |   1 +
 .../gremlin/structure/graphson/var-bulkset-v4.json |  10 +
 .../graphson/var-type-list-v4-no-types.json        |   1 +
 .../structure/graphson/var-type-list-v4.json       |   7 +
 .../graphson/var-type-map-v4-no-types.json         |   0
 .../structure/graphson/var-type-map-v4.json        |  25 +
 .../graphson/var-type-set-v4-no-types.json         |   1 +
 .../structure/graphson/var-type-set-v4.json        |   7 +
 .../graphson/vertex-traverser-v4-no-types.json     |  42 ++
 .../structure/graphson/vertex-traverser-v4.json    | 109 +++
 .../structure/graphson/zero-date-v4-no-types.json  |   1 +
 .../gremlin/structure/graphson/zero-date-v4.json   |   4 +
 .../graphson/zero-duration-v4-no-types.json        |   1 +
 .../structure/graphson/zero-duration-v4.json       |   4 +
 .../io/AbstractTypedCompatibilityTest.java         | 658 ++++++++--------
 .../tinkerpop/gremlin/structure/io/Model.java      | 219 +++---
 .../graphbinary/GraphBinaryCompatibilityTest.java  |  10 +-
 .../graphson/GraphSONTypedCompatibilityTest.java   |  18 +-
 187 files changed, 2652 insertions(+), 487 deletions(-)

diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/bulked-traverser-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/bulked-traverser-v4.gbin
new file mode 100644
index 0000000000..ec0a589053
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/bulked-traverser-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/edge-property-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/edge-property-v4.gbin
new file mode 100644
index 0000000000..ddc34e5ae6
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/edge-property-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-binary-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-binary-v4.gbin
new file mode 100644
index 0000000000..bb44d2bb50
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-binary-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-bulkset-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-bulkset-v4.gbin
new file mode 100644
index 0000000000..2f23c6bd4d
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-bulkset-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-list-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-list-v4.gbin
new file mode 100644
index 0000000000..541fdf3033
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-list-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-map-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-map-v4.gbin
new file mode 100644
index 0000000000..671d59ff44
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-map-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-path-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-path-v4.gbin
new file mode 100644
index 0000000000..4f9b5b6f7d
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-path-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-set-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-set-v4.gbin
new file mode 100644
index 0000000000..3426f04e7d
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-set-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-traverser-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-traverser-v4.gbin
new file mode 100644
index 0000000000..c5f3d9af99
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/empty-traverser-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/forever-duration-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/forever-duration-v4.gbin
new file mode 100644
index 0000000000..3b1ba9218f
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/forever-duration-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-byte-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-byte-v4.gbin
new file mode 100644
index 0000000000..c817f1332c
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-byte-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-date-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-date-v4.gbin
new file mode 100644
index 0000000000..eb7bf90046
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-date-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-double-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-double-v4.gbin
new file mode 100644
index 0000000000..b768fbbd4c
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-double-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-float-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-float-v4.gbin
new file mode 100644
index 0000000000..82c30942b1
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-float-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-int-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-int-v4.gbin
new file mode 100644
index 0000000000..9577d1fb1d
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-int-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-long-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-long-v4.gbin
new file mode 100644
index 0000000000..f30240c34e
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-long-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-offsetdatetime-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-offsetdatetime-v4.gbin
new file mode 100644
index 0000000000..620169668a
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-offsetdatetime-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-short-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-short-v4.gbin
new file mode 100644
index 0000000000..a7d7c33b69
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/max-short-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/meta-vertexproperty-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/meta-vertexproperty-v4.gbin
new file mode 100644
index 0000000000..f06f76cbc4
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/meta-vertexproperty-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-byte-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-byte-v4.gbin
new file mode 100644
index 0000000000..e51d9ad444
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-byte-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-date-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-date-v4.gbin
new file mode 100644
index 0000000000..860ed36c2c
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-date-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-double-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-double-v4.gbin
new file mode 100644
index 0000000000..a68796faa1
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-double-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-float-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-float-v4.gbin
new file mode 100644
index 0000000000..6637c5056d
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-float-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-int-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-int-v4.gbin
new file mode 100644
index 0000000000..089e2791f1
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-int-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-long-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-long-v4.gbin
new file mode 100644
index 0000000000..c0c1ffac4e
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-long-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-offsetdatetime-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-offsetdatetime-v4.gbin
new file mode 100644
index 0000000000..b915bea8ca
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-offsetdatetime-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-short-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-short-v4.gbin
new file mode 100644
index 0000000000..f4ba58f825
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/min-short-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/nan-double-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/nan-double-v4.gbin
new file mode 100644
index 0000000000..8a0314418e
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/nan-double-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/nan-float-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/nan-float-v4.gbin
new file mode 100644
index 0000000000..7d2d01379e
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/nan-float-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-bigdecimal-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-bigdecimal-v4.gbin
new file mode 100644
index 0000000000..3fda5009e2
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-bigdecimal-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-biginteger-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-biginteger-v4.gbin
new file mode 100644
index 0000000000..464792bbd2
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-biginteger-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-inf-double-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-inf-double-v4.gbin
new file mode 100644
index 0000000000..b60a57f278
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-inf-double-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-inf-float-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-inf-float-v4.gbin
new file mode 100644
index 0000000000..a84b7436ca
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-inf-float-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-max-double-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-max-double-v4.gbin
new file mode 100644
index 0000000000..db658bfcfe
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-max-double-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-max-float-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-max-float-v4.gbin
new file mode 100644
index 0000000000..e6bf5c3074
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-max-float-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-min-double-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-min-double-v4.gbin
new file mode 100644
index 0000000000..7d6b5cf326
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-min-double-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-min-float-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-min-float-v4.gbin
new file mode 100644
index 0000000000..583801e7d7
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/neg-min-float-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/nil-uuid-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/nil-uuid-v4.gbin
new file mode 100644
index 0000000000..828e057cf2
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/nil-uuid-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/no-prop-edge-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/no-prop-edge-v4.gbin
new file mode 100644
index 0000000000..201264742c
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/no-prop-edge-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/no-prop-vertex-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/no-prop-vertex-v4.gbin
new file mode 100644
index 0000000000..cb85436422
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/no-prop-vertex-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/null-property-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/null-property-v4.gbin
new file mode 100644
index 0000000000..12b81db1d5
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/null-property-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/pos-bigdecimal-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/pos-bigdecimal-v4.gbin
new file mode 100644
index 0000000000..a855c662b5
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/pos-bigdecimal-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/pos-biginteger-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/pos-biginteger-v4.gbin
new file mode 100644
index 0000000000..d841fbe39c
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/pos-biginteger-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/pos-inf-double-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/pos-inf-double-v4.gbin
new file mode 100644
index 0000000000..6ccb17151d
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/pos-inf-double-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/pos-inf-float-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/pos-inf-float-v4.gbin
new file mode 100644
index 0000000000..e17e136094
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/pos-inf-float-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/prop-path-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/prop-path-v4.gbin
new file mode 100644
index 0000000000..9306df5aa8
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/prop-path-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/set-cardinality-vertexproperty-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/set-cardinality-vertexproperty-v4.gbin
new file mode 100644
index 0000000000..133922bb45
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/set-cardinality-vertexproperty-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/specified-uuid-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/specified-uuid-v4.gbin
new file mode 100644
index 0000000000..7f1775d996
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/specified-uuid-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/str-binary-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/str-binary-v4.gbin
new file mode 100644
index 0000000000..39793d2360
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/str-binary-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/tinker-graph-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/tinker-graph-v4.gbin
new file mode 100644
index 0000000000..a0a76d1396
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/tinker-graph-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/traversal-edge-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/traversal-edge-v4.gbin
new file mode 100644
index 0000000000..f5404427d4
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/traversal-edge-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/traversal-path-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/traversal-path-v4.gbin
new file mode 100644
index 0000000000..9306df5aa8
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/traversal-path-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/traversal-vertex-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/traversal-vertex-v4.gbin
new file mode 100644
index 0000000000..4347734a13
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/traversal-vertex-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/traversal-vertexproperty-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/traversal-vertexproperty-v4.gbin
new file mode 100644
index 0000000000..8ddbebdefc
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/traversal-vertexproperty-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/var-bulkset-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/var-bulkset-v4.gbin
new file mode 100644
index 0000000000..4542906626
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/var-bulkset-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/var-type-list-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/var-type-list-v4.gbin
new file mode 100644
index 0000000000..273766eaa5
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/var-type-list-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/var-type-map-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/var-type-map-v4.gbin
new file mode 100644
index 0000000000..b91605798e
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/var-type-map-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/var-type-set-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/var-type-set-v4.gbin
new file mode 100644
index 0000000000..0e528d0729
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/var-type-set-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/vertex-traverser-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/vertex-traverser-v4.gbin
new file mode 100644
index 0000000000..2448b5c74f
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/vertex-traverser-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/zero-date-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/zero-date-v4.gbin
new file mode 100644
index 0000000000..d8f5a59290
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/zero-date-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/zero-duration-v4.gbin b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/zero-duration-v4.gbin
new file mode 100644
index 0000000000..2e103d7370
Binary files /dev/null and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphbinary/zero-duration-v4.gbin differ
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/bulked-traverser-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/bulked-traverser-v4-no-types.json
new file mode 100644
index 0000000000..45197046be
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/bulked-traverser-v4-no-types.json
@@ -0,0 +1,14 @@
+{
+  "bulk" : 7,
+  "value" : {
+    "id" : 11,
+    "label" : "software",
+    "type" : "vertex",
+    "properties" : {
+      "name" : [ {
+        "id" : 5,
+        "value" : "tinkergraph"
+      } ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/bulked-traverser-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/bulked-traverser-v4.json
new file mode 100644
index 0000000000..d1f4f33ab8
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/bulked-traverser-v4.json
@@ -0,0 +1,32 @@
+{
+  "@type" : "g:Traverser",
+  "@value" : {
+    "bulk" : {
+      "@type" : "g:Int64",
+      "@value" : 7
+    },
+    "value" : {
+      "@type" : "g:Vertex",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 11
+        },
+        "label" : "software",
+        "properties" : {
+          "name" : [ {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 5
+              },
+              "value" : "tinkergraph",
+              "label" : "name"
+            }
+          } ]
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/edge-property-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/edge-property-v4-no-types.json
new file mode 100644
index 0000000000..c051c0a8ef
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/edge-property-v4-no-types.json
@@ -0,0 +1,4 @@
+{
+  "key" : "since",
+  "value" : 2009
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/edge-property-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/edge-property-v4.json
new file mode 100644
index 0000000000..296fe3230c
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/edge-property-v4.json
@@ -0,0 +1,10 @@
+{
+  "@type" : "g:Property",
+  "@value" : {
+    "key" : "since",
+    "value" : {
+      "@type" : "g:Int32",
+      "@value" : 2009
+    }
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-binary-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-binary-v4-no-types.json
new file mode 100644
index 0000000000..3cc762b550
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-binary-v4-no-types.json
@@ -0,0 +1 @@
+""
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-binary-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-binary-v4.json
new file mode 100644
index 0000000000..3fe0ec48bc
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-binary-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "gx:ByteBuffer",
+  "@value" : ""
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-bulkset-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-bulkset-v4-no-types.json
new file mode 100644
index 0000000000..8878e547a7
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-bulkset-v4-no-types.json
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-bulkset-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-bulkset-v4.json
new file mode 100644
index 0000000000..f9fb4a5eed
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-bulkset-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:BulkSet",
+  "@value" : [ ]
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-list-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-list-v4-no-types.json
new file mode 100644
index 0000000000..8878e547a7
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-list-v4-no-types.json
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-list-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-list-v4.json
new file mode 100644
index 0000000000..aacbd803fb
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-list-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:List",
+  "@value" : [ ]
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-map-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-map-v4-no-types.json
new file mode 100644
index 0000000000..6f31cf5a2e
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-map-v4-no-types.json
@@ -0,0 +1 @@
+{ }
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-map-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-map-v4.json
new file mode 100644
index 0000000000..2856adc6e7
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-map-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Map",
+  "@value" : [ ]
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-path-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-path-v4-no-types.json
new file mode 100644
index 0000000000..3e3bdbfc27
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-path-v4-no-types.json
@@ -0,0 +1,4 @@
+{
+  "labels" : [ ],
+  "objects" : [ ]
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-path-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-path-v4.json
new file mode 100644
index 0000000000..9cb13f2327
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-path-v4.json
@@ -0,0 +1,13 @@
+{
+  "@type" : "g:Path",
+  "@value" : {
+    "labels" : {
+      "@type" : "g:List",
+      "@value" : [ ]
+    },
+    "objects" : {
+      "@type" : "g:List",
+      "@value" : [ ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-set-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-set-v4-no-types.json
new file mode 100644
index 0000000000..8878e547a7
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-set-v4-no-types.json
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-set-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-set-v4.json
new file mode 100644
index 0000000000..76789a41ed
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-set-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Set",
+  "@value" : [ ]
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-traverser-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-traverser-v4-no-types.json
new file mode 100644
index 0000000000..29bd471c6d
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-traverser-v4-no-types.json
@@ -0,0 +1,4 @@
+{
+  "bulk" : 0,
+  "value" : null
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-traverser-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-traverser-v4.json
new file mode 100644
index 0000000000..08298d82f3
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/empty-traverser-v4.json
@@ -0,0 +1,10 @@
+{
+  "@type" : "g:Traverser",
+  "@value" : {
+    "bulk" : {
+      "@type" : "g:Int64",
+      "@value" : 0
+    },
+    "value" : null
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/forever-duration-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/forever-duration-v4-no-types.json
new file mode 100644
index 0000000000..146f1dd430
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/forever-duration-v4-no-types.json
@@ -0,0 +1 @@
+"PT2562047788015215H30M7.999999999S"
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/forever-duration-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/forever-duration-v4.json
new file mode 100644
index 0000000000..ad8ff76989
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/forever-duration-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "gx:Duration",
+  "@value" : "PT2562047788015215H30M7.999999999S"
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-byte-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-byte-v4-no-types.json
new file mode 100644
index 0000000000..405e057083
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-byte-v4-no-types.json
@@ -0,0 +1 @@
+127
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-byte-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-byte-v4.json
new file mode 100644
index 0000000000..b004ec57b7
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-byte-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "gx:Byte",
+  "@value" : 127
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-date-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-date-v4-no-types.json
new file mode 100644
index 0000000000..996d127e59
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-date-v4-no-types.json
@@ -0,0 +1 @@
+9223372036854775807
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-date-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-date-v4.json
new file mode 100644
index 0000000000..3adcbd2ed3
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-date-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Date",
+  "@value" : 9223372036854775807
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-double-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-double-v4-no-types.json
new file mode 100644
index 0000000000..d3770f5172
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-double-v4-no-types.json
@@ -0,0 +1 @@
+1.7976931348623157E308
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-double-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-double-v4.json
new file mode 100644
index 0000000000..37e607b85f
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-double-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Double",
+  "@value" : 1.7976931348623157E308
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-float-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-float-v4-no-types.json
new file mode 100644
index 0000000000..4f37b13857
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-float-v4-no-types.json
@@ -0,0 +1 @@
+3.4028235E38
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-float-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-float-v4.json
new file mode 100644
index 0000000000..b008f1dd77
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-float-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Float",
+  "@value" : 3.4028235E38
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-int-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-int-v4-no-types.json
new file mode 100644
index 0000000000..55a89f5564
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-int-v4-no-types.json
@@ -0,0 +1 @@
+2147483647
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-int-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-int-v4.json
new file mode 100644
index 0000000000..f3bc62c071
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-int-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Int32",
+  "@value" : 2147483647
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-long-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-long-v4-no-types.json
new file mode 100644
index 0000000000..996d127e59
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-long-v4-no-types.json
@@ -0,0 +1 @@
+9223372036854775807
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-long-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-long-v4.json
new file mode 100644
index 0000000000..9bc12dc9d0
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-long-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Int64",
+  "@value" : 9223372036854775807
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-offsetdatetime-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-offsetdatetime-v4-no-types.json
new file mode 100644
index 0000000000..b8617fc167
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-offsetdatetime-v4-no-types.json
@@ -0,0 +1 @@
+"+999999999-12-31T23:59:59.999999999-18:00"
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-offsetdatetime-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-offsetdatetime-v4.json
new file mode 100644
index 0000000000..552963b081
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-offsetdatetime-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "gx:OffsetDateTime",
+  "@value" : "+999999999-12-31T23:59:59.999999999-18:00"
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-short-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-short-v4-no-types.json
new file mode 100644
index 0000000000..850e73f6c5
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-short-v4-no-types.json
@@ -0,0 +1 @@
+32767
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-short-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-short-v4.json
new file mode 100644
index 0000000000..82decf22ad
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/max-short-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "gx:Int16",
+  "@value" : 32767
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/meta-vertexproperty-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/meta-vertexproperty-v4-no-types.json
new file mode 100644
index 0000000000..b56e8b7ee8
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/meta-vertexproperty-v4-no-types.json
@@ -0,0 +1,8 @@
+{
+  "id" : 1,
+  "value" : "stephen",
+  "label" : "person",
+  "properties" : {
+    "a" : "b"
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/meta-vertexproperty-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/meta-vertexproperty-v4.json
new file mode 100644
index 0000000000..3dfb5842d3
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/meta-vertexproperty-v4.json
@@ -0,0 +1,14 @@
+{
+  "@type" : "g:VertexProperty",
+  "@value" : {
+    "id" : {
+      "@type" : "g:Int32",
+      "@value" : 1
+    },
+    "value" : "stephen",
+    "label" : "person",
+    "properties" : {
+      "a" : "b"
+    }
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-byte-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-byte-v4-no-types.json
new file mode 100644
index 0000000000..0595e86704
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-byte-v4-no-types.json
@@ -0,0 +1 @@
+-128
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-byte-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-byte-v4.json
new file mode 100644
index 0000000000..fedaea0d48
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-byte-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "gx:Byte",
+  "@value" : -128
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-date-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-date-v4-no-types.json
new file mode 100644
index 0000000000..9af921bf67
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-date-v4-no-types.json
@@ -0,0 +1 @@
+-9223372036854775808
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-date-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-date-v4.json
new file mode 100644
index 0000000000..e062710a8d
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-date-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Date",
+  "@value" : -9223372036854775808
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-double-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-double-v4-no-types.json
new file mode 100644
index 0000000000..af5e97e6e0
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-double-v4-no-types.json
@@ -0,0 +1 @@
+4.9E-324
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-double-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-double-v4.json
new file mode 100644
index 0000000000..689fe38b61
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-double-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Double",
+  "@value" : 4.9E-324
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-float-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-float-v4-no-types.json
new file mode 100644
index 0000000000..9f2a05f5e3
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-float-v4-no-types.json
@@ -0,0 +1 @@
+1.4E-45
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-float-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-float-v4.json
new file mode 100644
index 0000000000..aa97eff785
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-float-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Float",
+  "@value" : 1.4E-45
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-int-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-int-v4-no-types.json
new file mode 100644
index 0000000000..f6712382ee
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-int-v4-no-types.json
@@ -0,0 +1 @@
+-2147483648
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-int-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-int-v4.json
new file mode 100644
index 0000000000..6e43d75fcd
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-int-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Int32",
+  "@value" : -2147483648
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-long-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-long-v4-no-types.json
new file mode 100644
index 0000000000..9af921bf67
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-long-v4-no-types.json
@@ -0,0 +1 @@
+-9223372036854775808
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-long-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-long-v4.json
new file mode 100644
index 0000000000..1f41b9c3b0
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-long-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Int64",
+  "@value" : -9223372036854775808
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-offsetdatetime-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-offsetdatetime-v4-no-types.json
new file mode 100644
index 0000000000..92e884dfcc
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-offsetdatetime-v4-no-types.json
@@ -0,0 +1 @@
+"-999999999-01-01T00:00+18:00"
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-offsetdatetime-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-offsetdatetime-v4.json
new file mode 100644
index 0000000000..40d58e3cc8
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-offsetdatetime-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "gx:OffsetDateTime",
+  "@value" : "-999999999-01-01T00:00+18:00"
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-short-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-short-v4-no-types.json
new file mode 100644
index 0000000000..1531bbdf1a
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-short-v4-no-types.json
@@ -0,0 +1 @@
+-32768
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-short-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-short-v4.json
new file mode 100644
index 0000000000..065cafa4e6
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/min-short-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "gx:Int16",
+  "@value" : -32768
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nan-double-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nan-double-v4-no-types.json
new file mode 100644
index 0000000000..d994c6fb63
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nan-double-v4-no-types.json
@@ -0,0 +1 @@
+"NaN"
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nan-double-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nan-double-v4.json
new file mode 100644
index 0000000000..7b10376544
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nan-double-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Double",
+  "@value" : "NaN"
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nan-float-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nan-float-v4-no-types.json
new file mode 100644
index 0000000000..d994c6fb63
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nan-float-v4-no-types.json
@@ -0,0 +1 @@
+"NaN"
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nan-float-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nan-float-v4.json
new file mode 100644
index 0000000000..b831121e2f
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nan-float-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Float",
+  "@value" : "NaN"
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-bigdecimal-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-bigdecimal-v4-no-types.json
new file mode 100644
index 0000000000..e6b81107f3
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-bigdecimal-v4-no-types.json
@@ -0,0 +1 @@
+-123.456789987654321123456789987654321
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-bigdecimal-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-bigdecimal-v4.json
new file mode 100644
index 0000000000..31622f7a8d
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-bigdecimal-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "gx:BigDecimal",
+  "@value" : -123.456789987654321123456789987654321
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-biginteger-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-biginteger-v4-no-types.json
new file mode 100644
index 0000000000..e43591aa53
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-biginteger-v4-no-types.json
@@ -0,0 +1 @@
+-123456789987654321123456789987654321
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-biginteger-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-biginteger-v4.json
new file mode 100644
index 0000000000..3cda554ad2
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-biginteger-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "gx:BigInteger",
+  "@value" : -123456789987654321123456789987654321
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-inf-double-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-inf-double-v4-no-types.json
new file mode 100644
index 0000000000..5436817f29
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-inf-double-v4-no-types.json
@@ -0,0 +1 @@
+"-Infinity"
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-inf-double-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-inf-double-v4.json
new file mode 100644
index 0000000000..1c8db0fefd
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-inf-double-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Double",
+  "@value" : "-Infinity"
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-inf-float-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-inf-float-v4-no-types.json
new file mode 100644
index 0000000000..5436817f29
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-inf-float-v4-no-types.json
@@ -0,0 +1 @@
+"-Infinity"
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-inf-float-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-inf-float-v4.json
new file mode 100644
index 0000000000..7eeef1151c
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-inf-float-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Float",
+  "@value" : "-Infinity"
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-max-double-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-max-double-v4-no-types.json
new file mode 100644
index 0000000000..2ba118fd14
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-max-double-v4-no-types.json
@@ -0,0 +1 @@
+-1.7976931348623157E308
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-max-double-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-max-double-v4.json
new file mode 100644
index 0000000000..22ee62b946
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-max-double-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Double",
+  "@value" : -1.7976931348623157E308
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-max-float-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-max-float-v4-no-types.json
new file mode 100644
index 0000000000..284d841655
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-max-float-v4-no-types.json
@@ -0,0 +1 @@
+-3.4028235E38
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-max-float-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-max-float-v4.json
new file mode 100644
index 0000000000..a1fb83b266
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-max-float-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Float",
+  "@value" : -3.4028235E38
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-min-double-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-min-double-v4-no-types.json
new file mode 100644
index 0000000000..5384866d56
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-min-double-v4-no-types.json
@@ -0,0 +1 @@
+-4.9E-324
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-min-double-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-min-double-v4.json
new file mode 100644
index 0000000000..d71c0c4883
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-min-double-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Double",
+  "@value" : -4.9E-324
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-min-float-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-min-float-v4-no-types.json
new file mode 100644
index 0000000000..07809a837a
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-min-float-v4-no-types.json
@@ -0,0 +1 @@
+-1.4E-45
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-min-float-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-min-float-v4.json
new file mode 100644
index 0000000000..49925406e2
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/neg-min-float-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Float",
+  "@value" : -1.4E-45
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nil-uuid-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nil-uuid-v4-no-types.json
new file mode 100644
index 0000000000..48410c8b79
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nil-uuid-v4-no-types.json
@@ -0,0 +1 @@
+"00000000-0000-0000-0000-000000000000"
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nil-uuid-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nil-uuid-v4.json
new file mode 100644
index 0000000000..a016ec298d
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/nil-uuid-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:UUID",
+  "@value" : "00000000-0000-0000-0000-000000000000"
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/no-prop-edge-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/no-prop-edge-v4-no-types.json
new file mode 100644
index 0000000000..5234e8cfa3
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/no-prop-edge-v4-no-types.json
@@ -0,0 +1,9 @@
+{
+  "id" : 13,
+  "label" : "develops",
+  "type" : "edge",
+  "inVLabel" : "software",
+  "outVLabel" : "person",
+  "inV" : 10,
+  "outV" : 1
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/no-prop-edge-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/no-prop-edge-v4.json
new file mode 100644
index 0000000000..8712885cee
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/no-prop-edge-v4.json
@@ -0,0 +1,20 @@
+{
+  "@type" : "g:Edge",
+  "@value" : {
+    "id" : {
+      "@type" : "g:Int32",
+      "@value" : 13
+    },
+    "label" : "develops",
+    "inVLabel" : "software",
+    "outVLabel" : "person",
+    "inV" : {
+      "@type" : "g:Int32",
+      "@value" : 10
+    },
+    "outV" : {
+      "@type" : "g:Int32",
+      "@value" : 1
+    }
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/no-prop-vertex-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/no-prop-vertex-v4-no-types.json
new file mode 100644
index 0000000000..a888435f5a
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/no-prop-vertex-v4-no-types.json
@@ -0,0 +1,5 @@
+{
+  "id" : 1,
+  "label" : "person",
+  "type" : "vertex"
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/no-prop-vertex-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/no-prop-vertex-v4.json
new file mode 100644
index 0000000000..2d7fc68651
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/no-prop-vertex-v4.json
@@ -0,0 +1,10 @@
+{
+  "@type" : "g:Vertex",
+  "@value" : {
+    "id" : {
+      "@type" : "g:Int32",
+      "@value" : 1
+    },
+    "label" : "person"
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/null-property-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/null-property-v4-no-types.json
new file mode 100644
index 0000000000..f46f6838f5
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/null-property-v4-no-types.json
@@ -0,0 +1,4 @@
+{
+  "key" : "",
+  "value" : null
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/null-property-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/null-property-v4.json
new file mode 100644
index 0000000000..bc62d63804
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/null-property-v4.json
@@ -0,0 +1,7 @@
+{
+  "@type" : "g:Property",
+  "@value" : {
+    "key" : "",
+    "value" : null
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-bigdecimal-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-bigdecimal-v4-no-types.json
new file mode 100644
index 0000000000..80d5076c6b
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-bigdecimal-v4-no-types.json
@@ -0,0 +1 @@
+123.456789987654321123456789987654321
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-bigdecimal-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-bigdecimal-v4.json
new file mode 100644
index 0000000000..fcf7fd8c77
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-bigdecimal-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "gx:BigDecimal",
+  "@value" : 123.456789987654321123456789987654321
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-biginteger-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-biginteger-v4-no-types.json
new file mode 100644
index 0000000000..7914536bc3
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-biginteger-v4-no-types.json
@@ -0,0 +1 @@
+123456789987654321123456789987654321
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-biginteger-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-biginteger-v4.json
new file mode 100644
index 0000000000..58e6114369
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-biginteger-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "gx:BigInteger",
+  "@value" : 123456789987654321123456789987654321
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-inf-double-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-inf-double-v4-no-types.json
new file mode 100644
index 0000000000..f5b43a070e
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-inf-double-v4-no-types.json
@@ -0,0 +1 @@
+"Infinity"
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-inf-double-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-inf-double-v4.json
new file mode 100644
index 0000000000..7c025113c5
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-inf-double-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Double",
+  "@value" : "Infinity"
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-inf-float-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-inf-float-v4-no-types.json
new file mode 100644
index 0000000000..f5b43a070e
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-inf-float-v4-no-types.json
@@ -0,0 +1 @@
+"Infinity"
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-inf-float-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-inf-float-v4.json
new file mode 100644
index 0000000000..61923d9e73
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/pos-inf-float-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Float",
+  "@value" : "Infinity"
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/prop-path-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/prop-path-v4-no-types.json
new file mode 100644
index 0000000000..2eee883b41
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/prop-path-v4-no-types.json
@@ -0,0 +1,62 @@
+{
+  "labels" : [ [ ], [ ], [ ] ],
+  "objects" : [ {
+    "id" : 1,
+    "label" : "person",
+    "type" : "vertex",
+    "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" : 10,
+    "label" : "software",
+    "type" : "vertex",
+    "properties" : {
+      "name" : [ {
+        "id" : 4,
+        "value" : "gremlin"
+      } ]
+    }
+  }, {
+    "id" : 11,
+    "label" : "software",
+    "type" : "vertex",
+    "properties" : {
+      "name" : [ {
+        "id" : 5,
+        "value" : "tinkergraph"
+      } ]
+    }
+  } ]
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/prop-path-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/prop-path-v4.json
new file mode 100644
index 0000000000..a4edc99eae
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/prop-path-v4.json
@@ -0,0 +1,165 @@
+{
+  "@type" : "g:Path",
+  "@value" : {
+    "labels" : {
+      "@type" : "g:List",
+      "@value" : [ {
+        "@type" : "g:Set",
+        "@value" : [ ]
+      }, {
+        "@type" : "g:Set",
+        "@value" : [ ]
+      }, {
+        "@type" : "g:Set",
+        "@value" : [ ]
+      } ]
+    },
+    "objects" : {
+      "@type" : "g:List",
+      "@value" : [ {
+        "@type" : "g:Vertex",
+        "@value" : {
+          "id" : {
+            "@type" : "g:Int32",
+            "@value" : 1
+          },
+          "label" : "person",
+          "properties" : {
+            "name" : [ {
+              "@type" : "g:VertexProperty",
+              "@value" : {
+                "id" : {
+                  "@type" : "g:Int64",
+                  "@value" : 0
+                },
+                "value" : "marko",
+                "label" : "name"
+              }
+            } ],
+            "location" : [ {
+              "@type" : "g:VertexProperty",
+              "@value" : {
+                "id" : {
+                  "@type" : "g:Int64",
+                  "@value" : 6
+                },
+                "value" : "san diego",
+                "label" : "location",
+                "properties" : {
+                  "startTime" : {
+                    "@type" : "g:Int32",
+                    "@value" : 1997
+                  },
+                  "endTime" : {
+                    "@type" : "g:Int32",
+                    "@value" : 2001
+                  }
+                }
+              }
+            }, {
+              "@type" : "g:VertexProperty",
+              "@value" : {
+                "id" : {
+                  "@type" : "g:Int64",
+                  "@value" : 7
+                },
+                "value" : "santa cruz",
+                "label" : "location",
+                "properties" : {
+                  "startTime" : {
+                    "@type" : "g:Int32",
+                    "@value" : 2001
+                  },
+                  "endTime" : {
+                    "@type" : "g:Int32",
+                    "@value" : 2004
+                  }
+                }
+              }
+            }, {
+              "@type" : "g:VertexProperty",
+              "@value" : {
+                "id" : {
+                  "@type" : "g:Int64",
+                  "@value" : 8
+                },
+                "value" : "brussels",
+                "label" : "location",
+                "properties" : {
+                  "startTime" : {
+                    "@type" : "g:Int32",
+                    "@value" : 2004
+                  },
+                  "endTime" : {
+                    "@type" : "g:Int32",
+                    "@value" : 2005
+                  }
+                }
+              }
+            }, {
+              "@type" : "g:VertexProperty",
+              "@value" : {
+                "id" : {
+                  "@type" : "g:Int64",
+                  "@value" : 9
+                },
+                "value" : "santa fe",
+                "label" : "location",
+                "properties" : {
+                  "startTime" : {
+                    "@type" : "g:Int32",
+                    "@value" : 2005
+                  }
+                }
+              }
+            } ]
+          }
+        }
+      }, {
+        "@type" : "g:Vertex",
+        "@value" : {
+          "id" : {
+            "@type" : "g:Int32",
+            "@value" : 10
+          },
+          "label" : "software",
+          "properties" : {
+            "name" : [ {
+              "@type" : "g:VertexProperty",
+              "@value" : {
+                "id" : {
+                  "@type" : "g:Int64",
+                  "@value" : 4
+                },
+                "value" : "gremlin",
+                "label" : "name"
+              }
+            } ]
+          }
+        }
+      }, {
+        "@type" : "g:Vertex",
+        "@value" : {
+          "id" : {
+            "@type" : "g:Int32",
+            "@value" : 11
+          },
+          "label" : "software",
+          "properties" : {
+            "name" : [ {
+              "@type" : "g:VertexProperty",
+              "@value" : {
+                "id" : {
+                  "@type" : "g:Int64",
+                  "@value" : 5
+                },
+                "value" : "tinkergraph",
+                "label" : "name"
+              }
+            } ]
+          }
+        }
+      } ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/set-cardinality-vertexproperty-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/set-cardinality-vertexproperty-v4-no-types.json
new file mode 100644
index 0000000000..8a4eb488b4
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/set-cardinality-vertexproperty-v4-no-types.json
@@ -0,0 +1,8 @@
+{
+  "id" : 1,
+  "value" : [ "stephen", "marko" ],
+  "label" : "person",
+  "properties" : {
+    "a" : "b"
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/set-cardinality-vertexproperty-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/set-cardinality-vertexproperty-v4.json
new file mode 100644
index 0000000000..f768cd84f2
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/set-cardinality-vertexproperty-v4.json
@@ -0,0 +1,17 @@
+{
+  "@type" : "g:VertexProperty",
+  "@value" : {
+    "id" : {
+      "@type" : "g:Int32",
+      "@value" : 1
+    },
+    "value" : {
+      "@type" : "g:Set",
+      "@value" : [ "stephen", "marko" ]
+    },
+    "label" : "person",
+    "properties" : {
+      "a" : "b"
+    }
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/specified-uuid-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/specified-uuid-v4-no-types.json
new file mode 100644
index 0000000000..b36ff96647
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/specified-uuid-v4-no-types.json
@@ -0,0 +1 @@
+"41d2e28a-20a4-4ab0-b379-d810dede3786"
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/specified-uuid-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/specified-uuid-v4.json
new file mode 100644
index 0000000000..1cf09f07ac
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/specified-uuid-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:UUID",
+  "@value" : "41d2e28a-20a4-4ab0-b379-d810dede3786"
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/str-binary-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/str-binary-v4-no-types.json
new file mode 100644
index 0000000000..e0046e9513
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/str-binary-v4-no-types.json
@@ -0,0 +1 @@
+"c29tZSBieXRlcyBmb3IgeW91"
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/str-binary-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/str-binary-v4.json
new file mode 100644
index 0000000000..57241159a3
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/str-binary-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "gx:ByteBuffer",
+  "@value" : "c29tZSBieXRlcyBmb3IgeW91"
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/tinker-graph-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/tinker-graph-v4-no-types.json
new file mode 100644
index 0000000000..13719f6352
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/tinker-graph-v4-no-types.json
@@ -0,0 +1,313 @@
+{
+  "vertices" : [ {
+    "id" : 1,
+    "label" : "person",
+    "type" : "vertex",
+    "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",
+    "type" : "vertex",
+    "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",
+    "type" : "vertex",
+    "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",
+    "type" : "vertex",
+    "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",
+    "type" : "vertex",
+    "properties" : {
+      "name" : [ {
+        "id" : 4,
+        "value" : "gremlin"
+      } ]
+    }
+  }, {
+    "id" : 11,
+    "label" : "software",
+    "type" : "vertex",
+    "properties" : {
+      "name" : [ {
+        "id" : 5,
+        "value" : "tinkergraph"
+      } ]
+    }
+  } ],
+  "edges" : [ {
+    "id" : 13,
+    "label" : "develops",
+    "type" : "edge",
+    "inVLabel" : "software",
+    "outVLabel" : "person",
+    "inV" : 10,
+    "outV" : 1,
+    "properties" : {
+      "since" : 2009
+    }
+  }, {
+    "id" : 14,
+    "label" : "develops",
+    "type" : "edge",
+    "inVLabel" : "software",
+    "outVLabel" : "person",
+    "inV" : 11,
+    "outV" : 1,
+    "properties" : {
+      "since" : 2010
+    }
+  }, {
+    "id" : 15,
+    "label" : "uses",
+    "type" : "edge",
+    "inVLabel" : "software",
+    "outVLabel" : "person",
+    "inV" : 10,
+    "outV" : 1,
+    "properties" : {
+      "skill" : 4
+    }
+  }, {
+    "id" : 16,
+    "label" : "uses",
+    "type" : "edge",
+    "inVLabel" : "software",
+    "outVLabel" : "person",
+    "inV" : 11,
+    "outV" : 1,
+    "properties" : {
+      "skill" : 5
+    }
+  }, {
+    "id" : 17,
+    "label" : "develops",
+    "type" : "edge",
+    "inVLabel" : "software",
+    "outVLabel" : "person",
+    "inV" : 10,
+    "outV" : 7,
+    "properties" : {
+      "since" : 2010
+    }
+  }, {
+    "id" : 18,
+    "label" : "develops",
+    "type" : "edge",
+    "inVLabel" : "software",
+    "outVLabel" : "person",
+    "inV" : 11,
+    "outV" : 7,
+    "properties" : {
+      "since" : 2011
+    }
+  }, {
+    "id" : 19,
+    "label" : "uses",
+    "type" : "edge",
+    "inVLabel" : "software",
+    "outVLabel" : "person",
+    "inV" : 10,
+    "outV" : 7,
+    "properties" : {
+      "skill" : 5
+    }
+  }, {
+    "id" : 20,
+    "label" : "uses",
+    "type" : "edge",
+    "inVLabel" : "software",
+    "outVLabel" : "person",
+    "inV" : 11,
+    "outV" : 7,
+    "properties" : {
+      "skill" : 4
+    }
+  }, {
+    "id" : 21,
+    "label" : "develops",
+    "type" : "edge",
+    "inVLabel" : "software",
+    "outVLabel" : "person",
+    "inV" : 10,
+    "outV" : 8,
+    "properties" : {
+      "since" : 2012
+    }
+  }, {
+    "id" : 22,
+    "label" : "uses",
+    "type" : "edge",
+    "inVLabel" : "software",
+    "outVLabel" : "person",
+    "inV" : 10,
+    "outV" : 8,
+    "properties" : {
+      "skill" : 3
+    }
+  }, {
+    "id" : 23,
+    "label" : "uses",
+    "type" : "edge",
+    "inVLabel" : "software",
+    "outVLabel" : "person",
+    "inV" : 11,
+    "outV" : 8,
+    "properties" : {
+      "skill" : 3
+    }
+  }, {
+    "id" : 24,
+    "label" : "uses",
+    "type" : "edge",
+    "inVLabel" : "software",
+    "outVLabel" : "person",
+    "inV" : 10,
+    "outV" : 9,
+    "properties" : {
+      "skill" : 5
+    }
+  }, {
+    "id" : 25,
+    "label" : "uses",
+    "type" : "edge",
+    "inVLabel" : "software",
+    "outVLabel" : "person",
+    "inV" : 11,
+    "outV" : 9,
+    "properties" : {
+      "skill" : 3
+    }
+  }, {
+    "id" : 26,
+    "label" : "traverses",
+    "type" : "edge",
+    "inVLabel" : "software",
+    "outVLabel" : "software",
+    "inV" : 11,
+    "outV" : 10
+  } ]
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/tinker-graph-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/tinker-graph-v4.json
new file mode 100644
index 0000000000..24e95ed6af
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/tinker-graph-v4.json
@@ -0,0 +1,829 @@
+{
+  "@type" : "tinker:graph",
+  "@value" : {
+    "vertices" : [ {
+      "@type" : "g:Vertex",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 1
+        },
+        "label" : "person",
+        "properties" : {
+          "name" : [ {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 0
+              },
+              "value" : "marko",
+              "label" : "name"
+            }
+          } ],
+          "location" : [ {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 6
+              },
+              "value" : "san diego",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 1997
+                },
+                "endTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2001
+                }
+              }
+            }
+          }, {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 7
+              },
+              "value" : "santa cruz",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2001
+                },
+                "endTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2004
+                }
+              }
+            }
+          }, {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 8
+              },
+              "value" : "brussels",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2004
+                },
+                "endTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2005
+                }
+              }
+            }
+          }, {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 9
+              },
+              "value" : "santa fe",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2005
+                }
+              }
+            }
+          } ]
+        }
+      }
+    }, {
+      "@type" : "g:Vertex",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 7
+        },
+        "label" : "person",
+        "properties" : {
+          "name" : [ {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 1
+              },
+              "value" : "stephen",
+              "label" : "name"
+            }
+          } ],
+          "location" : [ {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 10
+              },
+              "value" : "centreville",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 1990
+                },
+                "endTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2000
+                }
+              }
+            }
+          }, {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 11
+              },
+              "value" : "dulles",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2000
+                },
+                "endTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2006
+                }
+              }
+            }
+          }, {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 12
+              },
+              "value" : "purcellville",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2006
+                }
+              }
+            }
+          } ]
+        }
+      }
+    }, {
+      "@type" : "g:Vertex",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 8
+        },
+        "label" : "person",
+        "properties" : {
+          "name" : [ {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 2
+              },
+              "value" : "matthias",
+              "label" : "name"
+            }
+          } ],
+          "location" : [ {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 13
+              },
+              "value" : "bremen",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2004
+                },
+                "endTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2007
+                }
+              }
+            }
+          }, {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 14
+              },
+              "value" : "baltimore",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2007
+                },
+                "endTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2011
+                }
+              }
+            }
+          }, {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 15
+              },
+              "value" : "oakland",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2011
+                },
+                "endTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2014
+                }
+              }
+            }
+          }, {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 16
+              },
+              "value" : "seattle",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2014
+                }
+              }
+            }
+          } ]
+        }
+      }
+    }, {
+      "@type" : "g:Vertex",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 9
+        },
+        "label" : "person",
+        "properties" : {
+          "name" : [ {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 3
+              },
+              "value" : "daniel",
+              "label" : "name"
+            }
+          } ],
+          "location" : [ {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 17
+              },
+              "value" : "spremberg",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 1982
+                },
+                "endTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2005
+                }
+              }
+            }
+          }, {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 18
+              },
+              "value" : "kaiserslautern",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2005
+                },
+                "endTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2009
+                }
+              }
+            }
+          }, {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 19
+              },
+              "value" : "aachen",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2009
+                }
+              }
+            }
+          } ]
+        }
+      }
+    }, {
+      "@type" : "g:Vertex",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 10
+        },
+        "label" : "software",
+        "properties" : {
+          "name" : [ {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 4
+              },
+              "value" : "gremlin",
+              "label" : "name"
+            }
+          } ]
+        }
+      }
+    }, {
+      "@type" : "g:Vertex",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 11
+        },
+        "label" : "software",
+        "properties" : {
+          "name" : [ {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 5
+              },
+              "value" : "tinkergraph",
+              "label" : "name"
+            }
+          } ]
+        }
+      }
+    } ],
+    "edges" : [ {
+      "@type" : "g:Edge",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 13
+        },
+        "label" : "develops",
+        "inVLabel" : "software",
+        "outVLabel" : "person",
+        "inV" : {
+          "@type" : "g:Int32",
+          "@value" : 10
+        },
+        "outV" : {
+          "@type" : "g:Int32",
+          "@value" : 1
+        },
+        "properties" : {
+          "since" : {
+            "@type" : "g:Property",
+            "@value" : {
+              "key" : "since",
+              "value" : {
+                "@type" : "g:Int32",
+                "@value" : 2009
+              }
+            }
+          }
+        }
+      }
+    }, {
+      "@type" : "g:Edge",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 14
+        },
+        "label" : "develops",
+        "inVLabel" : "software",
+        "outVLabel" : "person",
+        "inV" : {
+          "@type" : "g:Int32",
+          "@value" : 11
+        },
+        "outV" : {
+          "@type" : "g:Int32",
+          "@value" : 1
+        },
+        "properties" : {
+          "since" : {
+            "@type" : "g:Property",
+            "@value" : {
+              "key" : "since",
+              "value" : {
+                "@type" : "g:Int32",
+                "@value" : 2010
+              }
+            }
+          }
+        }
+      }
+    }, {
+      "@type" : "g:Edge",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 15
+        },
+        "label" : "uses",
+        "inVLabel" : "software",
+        "outVLabel" : "person",
+        "inV" : {
+          "@type" : "g:Int32",
+          "@value" : 10
+        },
+        "outV" : {
+          "@type" : "g:Int32",
+          "@value" : 1
+        },
+        "properties" : {
+          "skill" : {
+            "@type" : "g:Property",
+            "@value" : {
+              "key" : "skill",
+              "value" : {
+                "@type" : "g:Int32",
+                "@value" : 4
+              }
+            }
+          }
+        }
+      }
+    }, {
+      "@type" : "g:Edge",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 16
+        },
+        "label" : "uses",
+        "inVLabel" : "software",
+        "outVLabel" : "person",
+        "inV" : {
+          "@type" : "g:Int32",
+          "@value" : 11
+        },
+        "outV" : {
+          "@type" : "g:Int32",
+          "@value" : 1
+        },
+        "properties" : {
+          "skill" : {
+            "@type" : "g:Property",
+            "@value" : {
+              "key" : "skill",
+              "value" : {
+                "@type" : "g:Int32",
+                "@value" : 5
+              }
+            }
+          }
+        }
+      }
+    }, {
+      "@type" : "g:Edge",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 17
+        },
+        "label" : "develops",
+        "inVLabel" : "software",
+        "outVLabel" : "person",
+        "inV" : {
+          "@type" : "g:Int32",
+          "@value" : 10
+        },
+        "outV" : {
+          "@type" : "g:Int32",
+          "@value" : 7
+        },
+        "properties" : {
+          "since" : {
+            "@type" : "g:Property",
+            "@value" : {
+              "key" : "since",
+              "value" : {
+                "@type" : "g:Int32",
+                "@value" : 2010
+              }
+            }
+          }
+        }
+      }
+    }, {
+      "@type" : "g:Edge",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 18
+        },
+        "label" : "develops",
+        "inVLabel" : "software",
+        "outVLabel" : "person",
+        "inV" : {
+          "@type" : "g:Int32",
+          "@value" : 11
+        },
+        "outV" : {
+          "@type" : "g:Int32",
+          "@value" : 7
+        },
+        "properties" : {
+          "since" : {
+            "@type" : "g:Property",
+            "@value" : {
+              "key" : "since",
+              "value" : {
+                "@type" : "g:Int32",
+                "@value" : 2011
+              }
+            }
+          }
+        }
+      }
+    }, {
+      "@type" : "g:Edge",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 19
+        },
+        "label" : "uses",
+        "inVLabel" : "software",
+        "outVLabel" : "person",
+        "inV" : {
+          "@type" : "g:Int32",
+          "@value" : 10
+        },
+        "outV" : {
+          "@type" : "g:Int32",
+          "@value" : 7
+        },
+        "properties" : {
+          "skill" : {
+            "@type" : "g:Property",
+            "@value" : {
+              "key" : "skill",
+              "value" : {
+                "@type" : "g:Int32",
+                "@value" : 5
+              }
+            }
+          }
+        }
+      }
+    }, {
+      "@type" : "g:Edge",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 20
+        },
+        "label" : "uses",
+        "inVLabel" : "software",
+        "outVLabel" : "person",
+        "inV" : {
+          "@type" : "g:Int32",
+          "@value" : 11
+        },
+        "outV" : {
+          "@type" : "g:Int32",
+          "@value" : 7
+        },
+        "properties" : {
+          "skill" : {
+            "@type" : "g:Property",
+            "@value" : {
+              "key" : "skill",
+              "value" : {
+                "@type" : "g:Int32",
+                "@value" : 4
+              }
+            }
+          }
+        }
+      }
+    }, {
+      "@type" : "g:Edge",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 21
+        },
+        "label" : "develops",
+        "inVLabel" : "software",
+        "outVLabel" : "person",
+        "inV" : {
+          "@type" : "g:Int32",
+          "@value" : 10
+        },
+        "outV" : {
+          "@type" : "g:Int32",
+          "@value" : 8
+        },
+        "properties" : {
+          "since" : {
+            "@type" : "g:Property",
+            "@value" : {
+              "key" : "since",
+              "value" : {
+                "@type" : "g:Int32",
+                "@value" : 2012
+              }
+            }
+          }
+        }
+      }
+    }, {
+      "@type" : "g:Edge",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 22
+        },
+        "label" : "uses",
+        "inVLabel" : "software",
+        "outVLabel" : "person",
+        "inV" : {
+          "@type" : "g:Int32",
+          "@value" : 10
+        },
+        "outV" : {
+          "@type" : "g:Int32",
+          "@value" : 8
+        },
+        "properties" : {
+          "skill" : {
+            "@type" : "g:Property",
+            "@value" : {
+              "key" : "skill",
+              "value" : {
+                "@type" : "g:Int32",
+                "@value" : 3
+              }
+            }
+          }
+        }
+      }
+    }, {
+      "@type" : "g:Edge",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 23
+        },
+        "label" : "uses",
+        "inVLabel" : "software",
+        "outVLabel" : "person",
+        "inV" : {
+          "@type" : "g:Int32",
+          "@value" : 11
+        },
+        "outV" : {
+          "@type" : "g:Int32",
+          "@value" : 8
+        },
+        "properties" : {
+          "skill" : {
+            "@type" : "g:Property",
+            "@value" : {
+              "key" : "skill",
+              "value" : {
+                "@type" : "g:Int32",
+                "@value" : 3
+              }
+            }
+          }
+        }
+      }
+    }, {
+      "@type" : "g:Edge",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 24
+        },
+        "label" : "uses",
+        "inVLabel" : "software",
+        "outVLabel" : "person",
+        "inV" : {
+          "@type" : "g:Int32",
+          "@value" : 10
+        },
+        "outV" : {
+          "@type" : "g:Int32",
+          "@value" : 9
+        },
+        "properties" : {
+          "skill" : {
+            "@type" : "g:Property",
+            "@value" : {
+              "key" : "skill",
+              "value" : {
+                "@type" : "g:Int32",
+                "@value" : 5
+              }
+            }
+          }
+        }
+      }
+    }, {
+      "@type" : "g:Edge",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 25
+        },
+        "label" : "uses",
+        "inVLabel" : "software",
+        "outVLabel" : "person",
+        "inV" : {
+          "@type" : "g:Int32",
+          "@value" : 11
+        },
+        "outV" : {
+          "@type" : "g:Int32",
+          "@value" : 9
+        },
+        "properties" : {
+          "skill" : {
+            "@type" : "g:Property",
+            "@value" : {
+              "key" : "skill",
+              "value" : {
+                "@type" : "g:Int32",
+                "@value" : 3
+              }
+            }
+          }
+        }
+      }
+    }, {
+      "@type" : "g:Edge",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 26
+        },
+        "label" : "traverses",
+        "inVLabel" : "software",
+        "outVLabel" : "software",
+        "inV" : {
+          "@type" : "g:Int32",
+          "@value" : 11
+        },
+        "outV" : {
+          "@type" : "g:Int32",
+          "@value" : 10
+        }
+      }
+    } ]
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-edge-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-edge-v4-no-types.json
new file mode 100644
index 0000000000..0f7f1682d1
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-edge-v4-no-types.json
@@ -0,0 +1,12 @@
+{
+  "id" : 13,
+  "label" : "develops",
+  "type" : "edge",
+  "inVLabel" : "software",
+  "outVLabel" : "person",
+  "inV" : 10,
+  "outV" : 1,
+  "properties" : {
+    "since" : 2009
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-edge-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-edge-v4.json
new file mode 100644
index 0000000000..ba1c52eb1e
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-edge-v4.json
@@ -0,0 +1,32 @@
+{
+  "@type" : "g:Edge",
+  "@value" : {
+    "id" : {
+      "@type" : "g:Int32",
+      "@value" : 13
+    },
+    "label" : "develops",
+    "inVLabel" : "software",
+    "outVLabel" : "person",
+    "inV" : {
+      "@type" : "g:Int32",
+      "@value" : 10
+    },
+    "outV" : {
+      "@type" : "g:Int32",
+      "@value" : 1
+    },
+    "properties" : {
+      "since" : {
+        "@type" : "g:Property",
+        "@value" : {
+          "key" : "since",
+          "value" : {
+            "@type" : "g:Int32",
+            "@value" : 2009
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-path-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-path-v4-no-types.json
new file mode 100644
index 0000000000..8919b3e6f4
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-path-v4-no-types.json
@@ -0,0 +1,16 @@
+{
+  "labels" : [ [ ], [ ], [ ] ],
+  "objects" : [ {
+    "id" : 1,
+    "label" : "person",
+    "type" : "vertex"
+  }, {
+    "id" : 10,
+    "label" : "software",
+    "type" : "vertex"
+  }, {
+    "id" : 11,
+    "label" : "software",
+    "type" : "vertex"
+  } ]
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-path-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-path-v4.json
new file mode 100644
index 0000000000..216b39354d
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-path-v4.json
@@ -0,0 +1,49 @@
+{
+  "@type" : "g:Path",
+  "@value" : {
+    "labels" : {
+      "@type" : "g:List",
+      "@value" : [ {
+        "@type" : "g:Set",
+        "@value" : [ ]
+      }, {
+        "@type" : "g:Set",
+        "@value" : [ ]
+      }, {
+        "@type" : "g:Set",
+        "@value" : [ ]
+      } ]
+    },
+    "objects" : {
+      "@type" : "g:List",
+      "@value" : [ {
+        "@type" : "g:Vertex",
+        "@value" : {
+          "id" : {
+            "@type" : "g:Int32",
+            "@value" : 1
+          },
+          "label" : "person"
+        }
+      }, {
+        "@type" : "g:Vertex",
+        "@value" : {
+          "id" : {
+            "@type" : "g:Int32",
+            "@value" : 10
+          },
+          "label" : "software"
+        }
+      }, {
+        "@type" : "g:Vertex",
+        "@value" : {
+          "id" : {
+            "@type" : "g:Int32",
+            "@value" : 11
+          },
+          "label" : "software"
+        }
+      } ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-vertex-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-vertex-v4-no-types.json
new file mode 100644
index 0000000000..a885f58b6f
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-vertex-v4-no-types.json
@@ -0,0 +1,39 @@
+{
+  "id" : 1,
+  "label" : "person",
+  "type" : "vertex",
+  "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
+      }
+    } ]
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-vertex-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-vertex-v4.json
new file mode 100644
index 0000000000..f10223032f
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-vertex-v4.json
@@ -0,0 +1,100 @@
+{
+  "@type" : "g:Vertex",
+  "@value" : {
+    "id" : {
+      "@type" : "g:Int32",
+      "@value" : 1
+    },
+    "label" : "person",
+    "properties" : {
+      "name" : [ {
+        "@type" : "g:VertexProperty",
+        "@value" : {
+          "id" : {
+            "@type" : "g:Int64",
+            "@value" : 0
+          },
+          "value" : "marko",
+          "label" : "name"
+        }
+      } ],
+      "location" : [ {
+        "@type" : "g:VertexProperty",
+        "@value" : {
+          "id" : {
+            "@type" : "g:Int64",
+            "@value" : 6
+          },
+          "value" : "san diego",
+          "label" : "location",
+          "properties" : {
+            "startTime" : {
+              "@type" : "g:Int32",
+              "@value" : 1997
+            },
+            "endTime" : {
+              "@type" : "g:Int32",
+              "@value" : 2001
+            }
+          }
+        }
+      }, {
+        "@type" : "g:VertexProperty",
+        "@value" : {
+          "id" : {
+            "@type" : "g:Int64",
+            "@value" : 7
+          },
+          "value" : "santa cruz",
+          "label" : "location",
+          "properties" : {
+            "startTime" : {
+              "@type" : "g:Int32",
+              "@value" : 2001
+            },
+            "endTime" : {
+              "@type" : "g:Int32",
+              "@value" : 2004
+            }
+          }
+        }
+      }, {
+        "@type" : "g:VertexProperty",
+        "@value" : {
+          "id" : {
+            "@type" : "g:Int64",
+            "@value" : 8
+          },
+          "value" : "brussels",
+          "label" : "location",
+          "properties" : {
+            "startTime" : {
+              "@type" : "g:Int32",
+              "@value" : 2004
+            },
+            "endTime" : {
+              "@type" : "g:Int32",
+              "@value" : 2005
+            }
+          }
+        }
+      }, {
+        "@type" : "g:VertexProperty",
+        "@value" : {
+          "id" : {
+            "@type" : "g:Int64",
+            "@value" : 9
+          },
+          "value" : "santa fe",
+          "label" : "location",
+          "properties" : {
+            "startTime" : {
+              "@type" : "g:Int32",
+              "@value" : 2005
+            }
+          }
+        }
+      } ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-vertexproperty-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-vertexproperty-v4-no-types.json
new file mode 100644
index 0000000000..74025a80e8
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-vertexproperty-v4-no-types.json
@@ -0,0 +1,5 @@
+{
+  "id" : 0,
+  "value" : "marko",
+  "label" : "name"
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-vertexproperty-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-vertexproperty-v4.json
new file mode 100644
index 0000000000..af184b1766
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/traversal-vertexproperty-v4.json
@@ -0,0 +1,11 @@
+{
+  "@type" : "g:VertexProperty",
+  "@value" : {
+    "id" : {
+      "@type" : "g:Int64",
+      "@value" : 0
+    },
+    "value" : "marko",
+    "label" : "name"
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-bulkset-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-bulkset-v4-no-types.json
new file mode 100644
index 0000000000..a0517ac6f8
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-bulkset-v4-no-types.json
@@ -0,0 +1 @@
+[ "marko", 1, "josh", 2 ]
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-bulkset-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-bulkset-v4.json
new file mode 100644
index 0000000000..c216a36171
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-bulkset-v4.json
@@ -0,0 +1,10 @@
+{
+  "@type" : "g:BulkSet",
+  "@value" : [ "marko", {
+    "@type" : "g:Int64",
+    "@value" : 1
+  }, "josh", {
+    "@type" : "g:Int64",
+    "@value" : 2
+  } ]
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-list-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-list-v4-no-types.json
new file mode 100644
index 0000000000..ca5ed041f9
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-list-v4-no-types.json
@@ -0,0 +1 @@
+[ 1, "person", true, null ]
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-list-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-list-v4.json
new file mode 100644
index 0000000000..a940634beb
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-list-v4.json
@@ -0,0 +1,7 @@
+{
+  "@type" : "g:List",
+  "@value" : [ {
+    "@type" : "g:Int32",
+    "@value" : 1
+  }, "person", true, null ]
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-map-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-map-v4-no-types.json
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-map-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-map-v4.json
new file mode 100644
index 0000000000..730af8a30f
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-map-v4.json
@@ -0,0 +1,25 @@
+{
+  "@type" : "g:Map",
+  "@value" : [ {
+    "@type" : "g:Date",
+    "@value" : 1481750076295
+  }, "red", null, null, {
+    "@type" : "g:List",
+    "@value" : [ {
+      "@type" : "g:Int32",
+      "@value" : 1
+    }, {
+      "@type" : "g:Int32",
+      "@value" : 2
+    }, {
+      "@type" : "g:Int32",
+      "@value" : 3
+    } ]
+  }, {
+    "@type" : "g:Date",
+    "@value" : 1481750076295
+  }, "test", {
+    "@type" : "g:Int32",
+    "@value" : 123
+  } ]
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-set-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-set-v4-no-types.json
new file mode 100644
index 0000000000..86c07bf39a
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-set-v4-no-types.json
@@ -0,0 +1 @@
+[ null, 1, "person", true ]
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-set-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-set-v4.json
new file mode 100644
index 0000000000..0e7c06755a
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/var-type-set-v4.json
@@ -0,0 +1,7 @@
+{
+  "@type" : "g:Set",
+  "@value" : [ null, {
+    "@type" : "g:Int32",
+    "@value" : 1
+  }, "person", true ]
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/vertex-traverser-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/vertex-traverser-v4-no-types.json
new file mode 100644
index 0000000000..f521d56714
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/vertex-traverser-v4-no-types.json
@@ -0,0 +1,42 @@
+{
+  "bulk" : 1,
+  "value" : {
+    "id" : 1,
+    "label" : "person",
+    "type" : "vertex",
+    "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
+        }
+      } ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/vertex-traverser-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/vertex-traverser-v4.json
new file mode 100644
index 0000000000..a59a29e9da
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/vertex-traverser-v4.json
@@ -0,0 +1,109 @@
+{
+  "@type" : "g:Traverser",
+  "@value" : {
+    "bulk" : {
+      "@type" : "g:Int64",
+      "@value" : 1
+    },
+    "value" : {
+      "@type" : "g:Vertex",
+      "@value" : {
+        "id" : {
+          "@type" : "g:Int32",
+          "@value" : 1
+        },
+        "label" : "person",
+        "properties" : {
+          "name" : [ {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 0
+              },
+              "value" : "marko",
+              "label" : "name"
+            }
+          } ],
+          "location" : [ {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 6
+              },
+              "value" : "san diego",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 1997
+                },
+                "endTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2001
+                }
+              }
+            }
+          }, {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 7
+              },
+              "value" : "santa cruz",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2001
+                },
+                "endTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2004
+                }
+              }
+            }
+          }, {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 8
+              },
+              "value" : "brussels",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2004
+                },
+                "endTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2005
+                }
+              }
+            }
+          }, {
+            "@type" : "g:VertexProperty",
+            "@value" : {
+              "id" : {
+                "@type" : "g:Int64",
+                "@value" : 9
+              },
+              "value" : "santa fe",
+              "label" : "location",
+              "properties" : {
+                "startTime" : {
+                  "@type" : "g:Int32",
+                  "@value" : 2005
+                }
+              }
+            }
+          } ]
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/zero-date-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/zero-date-v4-no-types.json
new file mode 100644
index 0000000000..c227083464
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/zero-date-v4-no-types.json
@@ -0,0 +1 @@
+0
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/zero-date-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/zero-date-v4.json
new file mode 100644
index 0000000000..14f354ddf4
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/zero-date-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "g:Date",
+  "@value" : 0
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/zero-duration-v4-no-types.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/zero-duration-v4-no-types.json
new file mode 100644
index 0000000000..3745d35cd2
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/zero-duration-v4-no-types.json
@@ -0,0 +1 @@
+"PT0S"
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/zero-duration-v4.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/zero-duration-v4.json
new file mode 100644
index 0000000000..e14db84027
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/graphson/zero-duration-v4.json
@@ -0,0 +1,4 @@
+{
+  "@type" : "gx:Duration",
+  "@value" : "PT0S"
+}
\ No newline at end of file
diff --git a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/AbstractTypedCompatibilityTest.java b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/AbstractTypedCompatibilityTest.java
index ba6ebec154..e881776185 100644
--- a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/AbstractTypedCompatibilityTest.java
+++ b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/AbstractTypedCompatibilityTest.java
@@ -88,20 +88,21 @@ import static org.junit.Assume.assumeThat;
 public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibilityTest {
 
     @Test
-    public void shouldReadWriteBarrier() throws Exception {
-        final String resourceName = "barrier";
+    public void shouldReadWritePositiveBigDecimal() throws Exception {
+        final String resourceName = "pos-bigdecimal";
 
-        final SackFunctions.Barrier resource = findModelEntryObject(resourceName);
-        final SackFunctions.Barrier fromStatic = read(readFromResource(resourceName), SackFunctions.Barrier.class);
-        final SackFunctions.Barrier recycled = read(write(fromStatic, SackFunctions.Barrier.class, resourceName), SackFunctions.Barrier.class);
+        final BigDecimal resource = findModelEntryObject(resourceName);
+        final BigDecimal fromStatic = read(readFromResource(resourceName), BigDecimal.class);
+        final BigDecimal recycled = read(write(fromStatic, BigDecimal.class, resourceName), BigDecimal.class);
+        assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteBigDecimal() throws Exception {
-        final String resourceName = "bigdecimal";
+    public void shouldReadWriteNegativeBigDecimal() throws Exception {
+        final String resourceName = "neg-bigdecimal";
 
         final BigDecimal resource = findModelEntryObject(resourceName);
         final BigDecimal fromStatic = read(readFromResource(resourceName), BigDecimal.class);
@@ -113,8 +114,21 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteBigInteger() throws Exception {
-        final String resourceName = "biginteger";
+    public void shouldReadWritePositiveBigInteger() throws Exception {
+        final String resourceName = "pos-biginteger";
+
+        final BigInteger resource = findModelEntryObject(resourceName);
+        final BigInteger fromStatic = read(readFromResource(resourceName), BigInteger.class);
+        final BigInteger recycled = read(write(fromStatic, BigInteger.class, resourceName), BigInteger.class);
+        assertNotSame(fromStatic, recycled);
+        assertEquals(fromStatic, recycled);
+        assertEquals(resource, fromStatic);
+        assertEquals(resource, recycled);
+    }
+
+    @Test
+    public void shouldReadWriteNegativeBigInteger() throws Exception {
+        final String resourceName = "neg-biginteger";
 
         final BigInteger resource = findModelEntryObject(resourceName);
         final BigInteger fromStatic = read(readFromResource(resourceName), BigInteger.class);
@@ -126,8 +140,20 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteByte() throws Exception {
-        final String resourceName = "byte";
+    public void shouldReadWriteMinByte() throws Exception {
+        final String resourceName = "min-byte";
+
+        final Byte resource = findModelEntryObject(resourceName);
+        final Byte fromStatic = read(readFromResource(resourceName), Byte.class);
+        final Byte recycled = read(write(fromStatic, Byte.class, resourceName), Byte.class);
+        assertEquals(fromStatic, recycled);
+        assertEquals(resource, fromStatic);
+        assertEquals(resource, recycled);
+    }
+
+    @Test
+    public void shouldReadWriteMaxByte() throws Exception {
+        final String resourceName = "max-byte";
 
         final Byte resource = findModelEntryObject(resourceName);
         final Byte fromStatic = read(readFromResource(resourceName), Byte.class);
@@ -138,8 +164,25 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteByteBuffer() throws Exception {
-        final String resourceName = "bytebuffer";
+    public void shouldReadWriteEmptyByteBuffer() throws Exception {
+        final String resourceName = "empty-binary";
+
+        final ByteBuffer resource = findModelEntryObject(resourceName);
+        final ByteBuffer fromStatic = read(readFromResource(resourceName), ByteBuffer.class);
+        // have to re-read because once the bytebuffer is flushed to array it will be emptied
+        final ByteBuffer recycled = read(write(read(readFromResource(resourceName), ByteBuffer.class), ByteBuffer.class, resourceName), ByteBuffer.class);
+        assertNotSame(fromStatic, recycled);
+        final byte[] resourceArray = resource.array();
+        final byte[] fromStaticArray = fromStatic.array();
+        final byte[] recycledArray = recycled.array();
+        assertThat(Arrays.equals(fromStaticArray, recycledArray), is(true));
+        assertThat(Arrays.equals(resourceArray, fromStaticArray), is(true));
+        assertThat(Arrays.equals(resourceArray, recycledArray), is(true));
+    }
+
+    @Test
+    public void shouldReadWriteStringByteBuffer() throws Exception {
+        final String resourceName = "str-binary";
 
         final ByteBuffer resource = findModelEntryObject(resourceName);
         final ByteBuffer fromStatic = read(readFromResource(resourceName), ByteBuffer.class);
@@ -155,60 +198,64 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteCardinality() throws Exception {
-        final String resourceName = "cardinality";
+    public void shouldReadWriteMaxDouble() throws Exception {
+        final String resourceName = "max-double";
 
-        final VertexProperty.Cardinality resource = findModelEntryObject(resourceName);
-        final VertexProperty.Cardinality fromStatic = read(readFromResource(resourceName), VertexProperty.Cardinality.class);
-        final VertexProperty.Cardinality recycled = read(write(fromStatic, VertexProperty.Cardinality.class, resourceName), VertexProperty.Cardinality.class);
+        final Double resource = findModelEntryObject(resourceName);
+        final Double fromStatic = read(readFromResource(resourceName), Double.class);
+        final Double recycled = read(write(fromStatic, Double.class, resourceName), Double.class);
+        assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteChar() throws Exception {
-        final String resourceName = "char";
+    public void shouldReadWriteMinDouble() throws Exception {
+        final String resourceName = "min-double";
 
-        final Character resource = findModelEntryObject(resourceName);
-        final Character fromStatic = read(readFromResource(resourceName), Character.class);
-        final Character recycled = read(write(fromStatic, Character.class, resourceName), Character.class);
+        final Double resource = findModelEntryObject(resourceName);
+        final Double fromStatic = read(readFromResource(resourceName), Double.class);
+        final Double recycled = read(write(fromStatic, Double.class, resourceName), Double.class);
+        assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteClass() throws Exception {
-        final String resourceName = "class";
+    public void shouldReadWriteMaxNegativeDouble() throws Exception {
+        final String resourceName = "neg-max-double";
 
-        final Class resource = findModelEntryObject(resourceName);
-        final Class fromStatic = read(readFromResource(resourceName), Class.class);
-        final Class recycled = read(write(fromStatic, Class.class, resourceName), Class.class);
+        final Double resource = findModelEntryObject(resourceName);
+        final Double fromStatic = read(readFromResource(resourceName), Double.class);
+        final Double recycled = read(write(fromStatic, Double.class, resourceName), Double.class);
+        assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteColumn() throws Exception {
-        final String resourceName = "column";
+    public void shouldReadWriteMinNegativeDouble() throws Exception {
+        final String resourceName = "neg-min-double";
 
-        final Column resource = findModelEntryObject(resourceName);
-        final Column fromStatic = read(readFromResource(resourceName), Column.class);
-        final Column recycled = read(write(fromStatic, Column.class, resourceName), Column.class);
+        final Double resource = findModelEntryObject(resourceName);
+        final Double fromStatic = read(readFromResource(resourceName), Double.class);
+        final Double recycled = read(write(fromStatic, Double.class, resourceName), Double.class);
+        assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteDate() throws Exception {
-        final String resourceName = "date";
+    public void shouldReadWriteNanDouble() throws Exception {
+        final String resourceName = "nan-double";
 
-        final Date resource = findModelEntryObject(resourceName);
-        final Date fromStatic = read(readFromResource(resourceName), Date.class);
-        final Date recycled = read(write(fromStatic, Date.class, resourceName), Date.class);
+        final Double resource = findModelEntryObject(resourceName);
+        final Double fromStatic = read(readFromResource(resourceName), Double.class);
+        final Double recycled = read(write(fromStatic, Double.class, resourceName), Double.class);
         assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
@@ -216,20 +263,21 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteDirection() throws Exception {
-        final String resourceName = "direction";
+    public void shouldReadWritePositiveInfinityDouble() throws Exception {
+        final String resourceName = "pos-inf-double";
 
-        final Direction resource = findModelEntryObject(resourceName);
-        final Direction fromStatic = read(readFromResource(resourceName), Direction.class);
-        final Direction recycled = read(write(fromStatic, Direction.class, resourceName), Direction.class);
+        final Double resource = findModelEntryObject(resourceName);
+        final Double fromStatic = read(readFromResource(resourceName), Double.class);
+        final Double recycled = read(write(fromStatic, Double.class, resourceName), Double.class);
+        assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteDouble() throws Exception {
-        final String resourceName = "double";
+    public void shouldReadWriteNegativeInfinityDouble() throws Exception {
+        final String resourceName = "neg-inf-double";
 
         final Double resource = findModelEntryObject(resourceName);
         final Double fromStatic = read(readFromResource(resourceName), Double.class);
@@ -241,8 +289,20 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteDuration() throws Exception {
-        final String resourceName = "duration";
+    public void shouldReadWriteZeroDuration() throws Exception {
+        final String resourceName = "zero-duration";
+
+        final Duration resource = findModelEntryObject(resourceName);
+        final Duration fromStatic = read(readFromResource(resourceName), Duration.class);
+        final Duration recycled = read(write(fromStatic, Duration.class, resourceName), Duration.class);
+        assertEquals(fromStatic, recycled);
+        assertEquals(resource, fromStatic);
+        assertEquals(resource, recycled);
+    }
+
+    @Test
+    public void shouldReadWriteForeverDuration() throws Exception {
+        final String resourceName = "forever-duration";
 
         final Duration resource = findModelEntryObject(resourceName);
         final Duration fromStatic = read(readFromResource(resourceName), Duration.class);
@@ -255,7 +315,7 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
 
     @Test
     public void shouldReadWriteEdge() throws Exception {
-        final String resourceName = "edge";
+        final String resourceName = "traversal-edge";
 
         final Edge resource = findModelEntryObject(resourceName);
         final Edge fromStatic = read(readFromResource(resourceName), Edge.class);
@@ -269,37 +329,40 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteFloat() throws Exception {
-        final String resourceName = "float";
+    public void shouldReadWriteNoPropertyEdge() throws Exception {
+        final String resourceName = "no-prop-edge";
 
-        final Float resource = findModelEntryObject(resourceName);
-        final Float fromStatic = read(readFromResource(resourceName), Float.class);
-        final Float recycled = read(write(fromStatic, Float.class, resourceName), Float.class);
+        final Edge resource = findModelEntryObject(resourceName);
+        final Edge fromStatic = read(readFromResource(resourceName), Edge.class);
+        final Edge recycled = read(write(fromStatic, Edge.class, resourceName), Edge.class);
         assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
+        assertEdge(resource, fromStatic);
+        assertEdge(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteINetAddress() throws Exception {
-        final String resourceName = "inetaddress";
+    public void shouldReadWriteMaxFloat() throws Exception {
+        final String resourceName = "max-float";
 
-        final InetAddress resource = findModelEntryObject(resourceName);
-        final InetAddress fromStatic = read(readFromResource(resourceName), InetAddress.class);
-        final InetAddress recycled = read(write(fromStatic, Float.class, resourceName), InetAddress.class);
+        final Float resource = findModelEntryObject(resourceName);
+        final Float fromStatic = read(readFromResource(resourceName), Float.class);
+        final Float recycled = read(write(fromStatic, Float.class, resourceName), Float.class);
+        assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteInstant() throws Exception {
-        final String resourceName = "instant";
+    public void shouldReadWriteMinFloat() throws Exception {
+        final String resourceName = "min-float";
 
-        final Instant resource = findModelEntryObject(resourceName);
-        final Instant fromStatic = read(readFromResource(resourceName), Instant.class);
-        final Instant recycled = read(write(fromStatic, Instant.class, resourceName), Instant.class);
+        final Float resource = findModelEntryObject(resourceName);
+        final Float fromStatic = read(readFromResource(resourceName), Float.class);
+        final Float recycled = read(write(fromStatic, Float.class, resourceName), Float.class);
         assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
@@ -307,24 +370,25 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteInteger() throws Exception {
-        final String resourceName = "integer";
+    public void shouldReadWriteMaxNegativeFloat() throws Exception {
+        final String resourceName = "neg-max-float";
 
-        final Integer resource = findModelEntryObject(resourceName);
-        final Integer fromStatic = read(readFromResource(resourceName), Integer.class);
-        final Integer recycled = read(write(fromStatic, Integer.class, resourceName), Integer.class);
+        final Float resource = findModelEntryObject(resourceName);
+        final Float fromStatic = read(readFromResource(resourceName), Float.class);
+        final Float recycled = read(write(fromStatic, Float.class, resourceName), Float.class);
+        assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteLambda() throws Exception {
-        final String resourceName = "lambda";
+    public void shouldReadWriteMinNegativeFloat() throws Exception {
+        final String resourceName = "neg-min-float";
 
-        final Lambda resource = findModelEntryObject(resourceName);
-        final Lambda fromStatic = read(readFromResource(resourceName), Lambda.class);
-        final Lambda recycled = read(write(fromStatic, Lambda.class, resourceName), Lambda.class);
+        final Float resource = findModelEntryObject(resourceName);
+        final Float fromStatic = read(readFromResource(resourceName), Float.class);
+        final Float recycled = read(write(fromStatic, Float.class, resourceName), Float.class);
         assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
@@ -332,12 +396,12 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteLocalDate() throws Exception {
-        final String resourceName = "localdate";
+    public void shouldReadWriteNanFloat() throws Exception {
+        final String resourceName = "nan-float";
 
-        final LocalDate resource = findModelEntryObject(resourceName);
-        final LocalDate fromStatic = read(readFromResource(resourceName), LocalDate.class);
-        final LocalDate recycled = read(write(fromStatic, LocalDate.class, resourceName), LocalDate.class);
+        final Float resource = findModelEntryObject(resourceName);
+        final Float fromStatic = read(readFromResource(resourceName), Float.class);
+        final Float recycled = read(write(fromStatic, Float.class, resourceName), Float.class);
         assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
@@ -345,12 +409,12 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteLocalDateTime() throws Exception {
-        final String resourceName = "localdatetime";
+    public void shouldReadWritePositiveInfinityFloat() throws Exception {
+        final String resourceName = "pos-inf-float";
 
-        final LocalDateTime resource = findModelEntryObject(resourceName);
-        final LocalDateTime fromStatic = read(readFromResource(resourceName), LocalDateTime.class);
-        final LocalDateTime recycled = read(write(fromStatic, LocalDateTime.class, resourceName), LocalDateTime.class);
+        final Float resource = findModelEntryObject(resourceName);
+        final Float fromStatic = read(readFromResource(resourceName), Float.class);
+        final Float recycled = read(write(fromStatic, Float.class, resourceName), Float.class);
         assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
@@ -358,12 +422,12 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteLocalTime() throws Exception {
-        final String resourceName = "localtime";
+    public void shouldReadWriteNegativeInfinityFloat() throws Exception {
+        final String resourceName = "neg-inf-float";
 
-        final LocalTime resource = findModelEntryObject(resourceName);
-        final LocalTime fromStatic = read(readFromResource(resourceName), LocalTime.class);
-        final LocalTime recycled = read(write(fromStatic, LocalTime.class, resourceName), LocalTime.class);
+        final Float resource = findModelEntryObject(resourceName);
+        final Float fromStatic = read(readFromResource(resourceName), Float.class);
+        final Float recycled = read(write(fromStatic, Float.class, resourceName), Float.class);
         assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
@@ -371,144 +435,123 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteLong() throws Exception {
-        final String resourceName = "long";
+    public void shouldReadWriteMaxInteger() throws Exception {
+        final String resourceName = "max-int";
 
-        final Long resource = findModelEntryObject(resourceName);
-        final Long fromStatic = read(readFromResource(resourceName), Long.class);
-        final Long recycled = read(write(fromStatic, Long.class, resourceName), Long.class);
+        final Integer resource = findModelEntryObject(resourceName);
+        final Integer fromStatic = read(readFromResource(resourceName), Integer.class);
+        final Integer recycled = read(write(fromStatic, Integer.class, resourceName), Integer.class);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteList() throws Exception {
-        final String resourceName = "list";
+    public void shouldReadWriteMinInteger() throws Exception {
+        final String resourceName = "min-int";
 
-        assumeThat("GraphSON v2 didn't explicitly have List as a type",
-                is(this.getClass().equals(GraphSONTypedCompatibilityTest.class) && getCompatibility().equals("v2")));
-
-        final List resource = findModelEntryObject(resourceName);
-        final List fromStatic = read(readFromResource(resourceName), List.class);
-        final List recycled = read(write(fromStatic, List.class, resourceName), List.class);
+        final Integer resource = findModelEntryObject(resourceName);
+        final Integer fromStatic = read(readFromResource(resourceName), Integer.class);
+        final Integer recycled = read(write(fromStatic, Integer.class, resourceName), Integer.class);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteMap() throws Exception {
-        final String resourceName = "map";
+    public void shouldReadWriteMaxLong() throws Exception {
+        final String resourceName = "max-long";
 
-        assumeThat("GraphSON v2 didn't explicitly have Map as a type",
-                is(this.getClass().equals(GraphSONTypedCompatibilityTest.class) && getCompatibility().equals("v2")));
-
-        final Map resource = findModelEntryObject(resourceName);
-        final Map fromStatic = read(readFromResource(resourceName), Map.class);
-        final Map recycled = read(write(fromStatic, Map.class, resourceName), Map.class);
+        final Long resource = findModelEntryObject(resourceName);
+        final Long fromStatic = read(readFromResource(resourceName), Long.class);
+        final Long recycled = read(write(fromStatic, Long.class, resourceName), Long.class);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteMetrics() throws Exception {
-        final String resourceName = "metrics";
+    public void shouldReadWriteMinLong() throws Exception {
+        final String resourceName = "min-long";
 
-        final Metrics fromStatic = read(readFromResource(resourceName), Metrics.class);
-        final Metrics recycled = read(write(fromStatic, Metrics.class, resourceName), Metrics.class);
-        assertNotSame(fromStatic, recycled);
-        // have to do compares on the object read from resources because it has statically calculated values. the
-        // "new" one from Model is generated dynamically from a traversal and thus has variations in properties that
-        // are based on time
-        assertEquals(fromStatic.getAnnotations(), recycled.getAnnotations());
-        assertEquals(fromStatic.getCounts(), recycled.getCounts());
-        assertEquals(fromStatic.getDuration(TimeUnit.MILLISECONDS), recycled.getDuration(TimeUnit.MILLISECONDS));
-    }
-
-    @Test
-    public void shouldReadWriteMonthDay() throws Exception {
-        final String resourceName = "monthday";
-
-        final MonthDay resource = findModelEntryObject(resourceName);
-        final MonthDay fromStatic = read(readFromResource(resourceName), MonthDay.class);
-        final MonthDay recycled = read(write(fromStatic, MonthDay.class, resourceName), MonthDay.class);
-        assertNotSame(fromStatic, recycled);
+        final Long resource = findModelEntryObject(resourceName);
+        final Long fromStatic = read(readFromResource(resourceName), Long.class);
+        final Long recycled = read(write(fromStatic, Long.class, resourceName), Long.class);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteOffsetDateTime() throws Exception {
-        final String resourceName = "offsetdatetime";
+    public void shouldReadWriteMultiTypeList() throws Exception {
+        final String resourceName = "var-type-list";
 
-        final OffsetDateTime resource = findModelEntryObject(resourceName);
-        final OffsetDateTime fromStatic = read(readFromResource(resourceName), OffsetDateTime.class);
-        final OffsetDateTime recycled = read(write(fromStatic, OffsetDateTime.class, resourceName), OffsetDateTime.class);
-        assertNotSame(fromStatic, recycled);
+        final List resource = findModelEntryObject(resourceName);
+        final List fromStatic = read(readFromResource(resourceName), List.class);
+        final List recycled = read(write(fromStatic, List.class, resourceName), List.class);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteOffsetTime() throws Exception {
-        final String resourceName = "offsettime";
+    public void shouldReadWriteEmptyList() throws Exception {
+        final String resourceName = "empty-list";
 
-        final OffsetTime resource = findModelEntryObject(resourceName);
-        final OffsetTime fromStatic = read(readFromResource(resourceName), OffsetTime.class);
-        final OffsetTime recycled = read(write(fromStatic, OffsetTime.class, resourceName), OffsetTime.class);
-        assertNotSame(fromStatic, recycled);
+        final List resource = findModelEntryObject(resourceName);
+        final List fromStatic = read(readFromResource(resourceName), List.class);
+        final List recycled = read(write(fromStatic, List.class, resourceName), List.class);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteOperator() throws Exception {
-        final String resourceName = "operator";
+    public void shouldReadWriteMultiTypeMap() throws Exception {
+        final String resourceName = "var-type-map";
 
-        final Operator resource = findModelEntryObject(resourceName);
-        final Operator fromStatic = read(readFromResource(resourceName), Operator.class);
-        final Operator recycled = read(write(fromStatic, Operator.class, resourceName), Operator.class);
+        final Map resource = findModelEntryObject(resourceName);
+        final Map fromStatic = read(readFromResource(resourceName), Map.class);
+        final Map recycled = read(write(fromStatic, Map.class, resourceName), Map.class);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteOrder() throws Exception {
-        final String resourceName = "order";
+    public void shouldReadWriteEmptyMap() throws Exception {
+        final String resourceName = "empty-map";
 
-        final Order resource = findModelEntryObject(resourceName);
-        final Order fromStatic = read(readFromResource(resourceName), Order.class);
-        final Order recycled = read(write(fromStatic, Order.class, resourceName), Order.class);
+        final Map resource = findModelEntryObject(resourceName);
+        final Map fromStatic = read(readFromResource(resourceName), Map.class);
+        final Map recycled = read(write(fromStatic, Map.class, resourceName), Map.class);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
+
     @Test
-    public void shouldReadWriteP() throws Exception {
-        final String resourceName = "p";
+    public void shouldReadWriteMaxOffsetDateTime() throws Exception {
+        final String resourceName = "max-offsetdatetime";
 
-        final P resource = findModelEntryObject(resourceName);
-        final P fromStatic = read(readFromResource(resourceName), P.class);
-        final P recycled = read(write(fromStatic, P.class, resourceName), P.class);
+        final OffsetDateTime resource = findModelEntryObject(resourceName);
+        final OffsetDateTime fromStatic = read(readFromResource(resourceName), OffsetDateTime.class);
+        final OffsetDateTime recycled = read(write(fromStatic, OffsetDateTime.class, resourceName), OffsetDateTime.class);
+        assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWritePAnd() throws Exception {
-        final String resourceName = "pand";
+    public void shouldReadWriteMinOffsetDateTime() throws Exception {
+        final String resourceName = "min-offsetdatetime";
 
-        final P resource = findModelEntryObject(resourceName);
-        final P fromStatic = read(readFromResource(resourceName), P.class);
-        final P recycled = read(write(fromStatic, P.class, resourceName), P.class);
+        final OffsetDateTime resource = findModelEntryObject(resourceName);
+        final OffsetDateTime fromStatic = read(readFromResource(resourceName), OffsetDateTime.class);
+        final OffsetDateTime recycled = read(write(fromStatic, OffsetDateTime.class, resourceName), OffsetDateTime.class);
+        assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
@@ -516,7 +559,7 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
 
     @Test
     public void shouldReadWritePath() throws Exception {
-        final String resourceName = "path";
+        final String resourceName = "traversal-path";
 
         final Path resource = findModelEntryObject(resourceName);
         final Path fromStatic = read(readFromResource(resourceName), Path.class);
@@ -528,45 +571,46 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWritePeriod() throws Exception {
-        final String resourceName = "period";
+    public void shouldReadWriteEmptyPath() throws Exception {
+        final String resourceName = "empty-path";
 
-        final Period resource = findModelEntryObject(resourceName);
-        final Period fromStatic = read(readFromResource(resourceName), Period.class);
-        final Period recycled = read(write(fromStatic, Period.class, resourceName), Period.class);
+        final Path resource = findModelEntryObject(resourceName);
+        final Path fromStatic = read(readFromResource(resourceName), Path.class);
+        final Path recycled = read(write(fromStatic, Path.class, resourceName), Path.class);
         assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
-        assertEquals(resource, fromStatic);
-        assertEquals(resource, recycled);
+        assertEquals(fromStatic, resource);
+        assertEquals(recycled, resource);
     }
 
     @Test
-    public void shouldReadWritePop() throws Exception {
-        final String resourceName = "pop";
+    public void shouldReadWritePathWithProperties() throws Exception {
+        final String resourceName = "prop-path";
 
-        final Pop resource = findModelEntryObject(resourceName);
-        final Pop fromStatic = read(readFromResource(resourceName), Pop.class);
-        final Pop recycled = read(write(fromStatic, Pop.class, resourceName), Pop.class);
+        final Path resource = findModelEntryObject(resourceName);
+        final Path fromStatic = read(readFromResource(resourceName), Path.class);
+        final Path recycled = read(write(fromStatic, Path.class, resourceName), Path.class);
+        assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWritePOr() throws Exception {
-        final String resourceName = "por";
+    public void shouldReadWriteEdgeProperty() throws Exception {
+        final String resourceName = "edge-property";
 
-        final P resource = findModelEntryObject(resourceName);
-        final P fromStatic = read(readFromResource(resourceName), P.class);
-        final P recycled = read(write(fromStatic, P.class, resourceName), P.class);
-        assertEquals(fromStatic, recycled);
-        assertEquals(resource, fromStatic);
-        assertEquals(resource, recycled);
+        final Property resource = findModelEntryObject(resourceName);
+        final Property fromStatic = read(readFromResource(resourceName), Property.class);
+        final Property recycled = read(write(fromStatic, Property.class, resourceName), Property.class);
+        assertNotSame(fromStatic, recycled);
+        assertProperty(resource, fromStatic);
+        assertProperty(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteProperty() throws Exception {
-        final String resourceName = "property";
+    public void shouldReadWriteNullProperty() throws Exception {
+        final String resourceName = "null-property";
 
         final Property resource = findModelEntryObject(resourceName);
         final Property fromStatic = read(readFromResource(resourceName), Property.class);
@@ -577,23 +621,20 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteScope() throws Exception {
-        final String resourceName = "scope";
+    public void shouldReadWriteMultiTypeSet() throws Exception {
+        final String resourceName = "var-type-set";
 
-        final Scope resource = findModelEntryObject(resourceName);
-        final Scope fromStatic = read(readFromResource(resourceName), Scope.class);
-        final Scope recycled = read(write(fromStatic, Scope.class, resourceName), Scope.class);
+        final Set resource = findModelEntryObject(resourceName);
+        final Set fromStatic = read(readFromResource(resourceName), Set.class);
+        final Set recycled = read(write(fromStatic, Set.class, resourceName), Set.class);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteSet() throws Exception {
-        final String resourceName = "set";
-
-        assumeThat("GraphSON v2 didn't explicitly have Set as a type",
-                is(this.getClass().equals(GraphSONTypedCompatibilityTest.class) && getCompatibility().equals("v2")));
+    public void shouldReadWriteEmptySet() throws Exception {
+        final String resourceName = "empty-set";
 
         final Set resource = findModelEntryObject(resourceName);
         final Set fromStatic = read(readFromResource(resourceName), Set.class);
@@ -604,8 +645,8 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteShort() throws Exception {
-        final String resourceName = "short";
+    public void shouldReadWriteMaxShort() throws Exception {
+        final String resourceName = "max-short";
 
         final Short resource = findModelEntryObject(resourceName);
         final Short fromStatic = read(readFromResource(resourceName), Short.class);
@@ -616,96 +657,12 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteStandardRequestMessage() throws Exception {
-        final String resourceName = "standardrequest";
-
-        assumeThat("GraphBinary does not test this because Request/ResponseMessage are not actual GraphBinary types",
-                this.getClass().equals(GraphBinaryCompatibilityTest.class),
-                is(false));
-        assumeThat("RequestMessageV4 was supported starting in GraphSONv4",
-                getCompatibility(),
-                is("v4"));
-
-        final RequestMessageV4 resource = findModelEntryObject(resourceName);
-        final RequestMessageV4 fromStatic = read(readFromResource(resourceName), RequestMessageV4.class);
-        final RequestMessageV4 recycled = read(write(fromStatic, RequestMessageV4.class, resourceName), RequestMessageV4.class);
-        assertNotSame(fromStatic, recycled);
-        assertRequestMessage(resource, fromStatic, recycled);
-    }
-
-    @Test
-    public void shouldReadWriteStandardExceptionResult() throws Exception {
-        final String resourceName = "standardexceptionresult";
-
-        assumeThat("GraphBinary does not test this because Request/ResponseMessage are not actual GraphBinary types",
-                this.getClass().equals(GraphBinaryCompatibilityTest.class),
-                is(false));
-        assumeThat("ResponseMessageV4 was supported starting in GraphSONv4",
-                getCompatibility(),
-                is("v4"));
-
-        final GraphSONMessageSerializerV4 gsSerializer = new GraphSONMessageSerializerV4();
-        final ByteBuf resourceInBytes = gsSerializer.writeHeader(findModelEntryObject(resourceName), new UnpooledByteBufAllocator(false));
-        final ResponseMessageV4 resource = read(resourceInBytes.array(), ResponseMessageV4.class);
-        final ResponseMessageV4 fromStatic = read(readFromResource(resourceName), ResponseMessageV4.class);
-        final ResponseMessageV4 recycled = read(write(fromStatic, HashMap.class, resourceName), ResponseMessageV4.class);
-        assertNotSame(fromStatic, recycled);
-        assertResponseMessage(resource, fromStatic, recycled);
-        resourceInBytes.release();
-    }
-
-    @Test
-    public void shouldReadWriteStandardResult() throws Exception {
-        final String resourceName = "standardresult";
-
-        assumeThat("GraphBinary does not test this because Request/ResponseMessage are not actual GraphBinary types",
-                this.getClass().equals(GraphBinaryCompatibilityTest.class),
-                is(false));
-        assumeThat("ResponseMessageV4 was supported starting in GraphSONv4",
-                getCompatibility(),
-                is("v4"));
-
-        final GraphSONMessageSerializerV4 gsSerializer = new GraphSONMessageSerializerV4();
-        final ByteBuf resourceInBytes = gsSerializer.writeHeader(findModelEntryObject(resourceName), new UnpooledByteBufAllocator(false));
-        final ResponseMessageV4 resource = read(resourceInBytes.array(), ResponseMessageV4.class);
-        final ResponseMessageV4 fromStatic = read(readFromResource(resourceName), ResponseMessageV4.class);
-        final ResponseMessageV4 recycled = read(write(fromStatic, HashMap.class, resourceName), ResponseMessageV4.class);
-        assertNotSame(fromStatic, recycled);
-        assertResponseMessage(resource, fromStatic, recycled);
-    }
-
-    @Test
-    public void shouldReadWriteT() throws Exception {
-        final String resourceName = "t";
-
-        final T resource = findModelEntryObject(resourceName);
-        final T fromStatic = read(readFromResource(resourceName), T.class);
-        final T recycled = read(write(fromStatic, T.class, resourceName), T.class);
-        assertEquals(fromStatic, recycled);
-        assertEquals(resource, fromStatic);
-        assertEquals(resource, recycled);
-    }
-
-    @Test
-    public void shouldReadWriteTextP() throws Exception {
-        final String resourceName = "textp";
-
-        final TextP resource = findModelEntryObject(resourceName);
-        final TextP fromStatic = read(readFromResource(resourceName), TextP.class);
-        final TextP recycled = read(write(fromStatic, TextP.class, resourceName), TextP.class);
-        assertEquals(fromStatic, recycled);
-        assertEquals(resource, fromStatic);
-        assertEquals(resource, recycled);
-    }
-
-    @Test
-    public void shouldReadWriteTimestamp() throws Exception {
-        final String resourceName = "timestamp";
+    public void shouldReadWriteMinShort() throws Exception {
+        final String resourceName = "min-short";
 
-        final Timestamp resource = findModelEntryObject(resourceName);
-        final Timestamp fromStatic = read(readFromResource(resourceName), Timestamp.class);
-        final Timestamp recycled = read(write(fromStatic, Timestamp.class, resourceName), Timestamp.class);
-        assertNotSame(fromStatic, recycled);
+        final Short resource = findModelEntryObject(resourceName);
+        final Short fromStatic = read(readFromResource(resourceName), Short.class);
+        final Short recycled = read(write(fromStatic, Short.class, resourceName), Short.class);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
@@ -713,7 +670,7 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
 
     @Test
     public void shouldReadWriteTinkerGraph() throws Exception {
-        final String resourceName = "tinkergraph";
+        final String resourceName = "tinker-graph";
 
         final TinkerGraph fromStatic = read(readFromResource(resourceName), TinkerGraph.class);
         final TinkerGraph recycled = read(write(fromStatic, TinkerGraph.class, resourceName), TinkerGraph.class);
@@ -724,28 +681,24 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteTraversalMetrics() throws Exception {
-        final String resourceName = "traversalmetrics";
+    public void shouldReadWriteVertexTraverser() throws Exception {
+        final String resourceName = "vertex-traverser";
 
-        final TraversalMetrics resource = findModelEntryObject(resourceName);
-        final TraversalMetrics fromStatic = read(readFromResource(resourceName), TraversalMetrics.class);
-        final TraversalMetrics recycled = read(write(fromStatic, TraversalMetrics.class, resourceName), TraversalMetrics.class);
+        final Traverser resource = findModelEntryObject(resourceName);
+        final Traverser fromStatic = read(readFromResource(resourceName), Traverser.class);
+        final Traverser recycled = read(write(fromStatic, Traverser.class, resourceName), Traverser.class);
         assertNotSame(fromStatic, recycled);
-
-        // need to assert against each other since the model version can change between test runs as it is dynamically
-        // generated
-        assertEquals(recycled.getDuration(TimeUnit.MILLISECONDS), fromStatic.getDuration(TimeUnit.MILLISECONDS));
-        final Collection<? extends Metrics> resourceMetrics = resource.getMetrics();
-        resourceMetrics.forEach(m -> {
-            assertEquals(recycled.getMetrics(m.getId()).getAnnotations(), fromStatic.getMetrics(m.getId()).getAnnotations());
-            assertEquals(recycled.getMetrics(m.getId()).getName(), fromStatic.getMetrics(m.getId()).getName());
-            assertEquals(recycled.getMetrics(m.getId()).getCounts(), fromStatic.getMetrics(m.getId()).getCounts());
-        });
+        assertEquals(resource.bulk(), recycled.bulk());
+        assertEquals(resource.bulk(), fromStatic.bulk());
+        assertEquals(resource.get(), recycled.get());
+        assertEquals(resource.get(), fromStatic.get());
+        assertVertex((Vertex) resource.get(), (Vertex) recycled.get());
+        assertVertex((Vertex) resource.get(), (Vertex) fromStatic.get());
     }
 
     @Test
-    public void shouldReadWriteTraverser() throws Exception {
-        final String resourceName = "traverser";
+    public void shouldReadWriteBulkedTraverser() throws Exception {
+        final String resourceName = "bulked-traverser";
 
         final Traverser resource = findModelEntryObject(resourceName);
         final Traverser fromStatic = read(readFromResource(resourceName), Traverser.class);
@@ -759,9 +712,25 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
         assertVertex((Vertex) resource.get(), (Vertex) fromStatic.get());
     }
 
+    @Test
+    public void shouldReadWriteEmptyTraverser() throws Exception {
+        final String resourceName = "empty-traverser";
+
+        final Traverser resource = findModelEntryObject(resourceName);
+        final Traverser fromStatic = read(readFromResource(resourceName), Traverser.class);
+        final Traverser recycled = read(write(fromStatic, Traverser.class, resourceName), Traverser.class);
+        assertNotSame(fromStatic, recycled);
+        assertEquals(resource.bulk(), recycled.bulk());
+        assertEquals(resource.bulk(), fromStatic.bulk());
+        assertEquals(resource.get(), recycled.get());
+        assertEquals(resource.get(), fromStatic.get());
+        assertEquals(recycled.bulk(), fromStatic.bulk());
+        assertEquals(recycled.get(), fromStatic.get());
+    }
+
     @Test
     public void shouldReadWriteUUID() throws Exception {
-        final String resourceName = "uuid";
+        final String resourceName = "specified-uuid";
 
         final UUID resource = findModelEntryObject(resourceName);
         final UUID fromStatic = read(readFromResource(resourceName), UUID.class);
@@ -773,89 +742,90 @@ public abstract class AbstractTypedCompatibilityTest extends AbstractCompatibili
     }
 
     @Test
-    public void shouldReadWriteVertex() throws Exception {
-        final String resourceName = "vertex";
+    public void shouldReadWriteNilUUID() throws Exception {
+        final String resourceName = "nil-uuid";
 
-        final Vertex resource = findModelEntryObject(resourceName);
-        final Vertex fromStatic = read(readFromResource(resourceName), Vertex.class);
-        final Vertex recycled = read(write(fromStatic, Vertex.class, resourceName), Vertex.class);
+        final UUID resource = findModelEntryObject(resourceName);
+        final UUID fromStatic = read(readFromResource(resourceName), UUID.class);
+        final UUID recycled = read(write(fromStatic, UUID.class, resourceName), UUID.class);
         assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
-        assertVertex(resource, fromStatic);
-        assertVertex(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteVertexProperty() throws Exception {
-        final String resourceName = "vertexproperty";
+    public void shouldReadWriteVertex() throws Exception {
+        final String resourceName = "traversal-vertex";
 
-        final VertexProperty resource = findModelEntryObject(resourceName);
-        final VertexProperty fromStatic = read(readFromResource(resourceName), VertexProperty.class);
-        final VertexProperty recycled = read(write(fromStatic, VertexProperty.class, resourceName), VertexProperty.class);
+        final Vertex resource = findModelEntryObject(resourceName);
+        final Vertex fromStatic = read(readFromResource(resourceName), Vertex.class);
+        final Vertex recycled = read(write(fromStatic, Vertex.class, resourceName), Vertex.class);
         assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
-        assertVertexProperty(resource, recycled);
-        assertVertexProperty(resource, fromStatic);
+        assertVertex(resource, fromStatic);
+        assertVertex(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteYear() throws Exception {
-        final String resourceName = "year";
+    public void shouldReadWriteNoPropertyVertex() throws Exception {
+        final String resourceName = "no-prop-vertex";
 
-        final Year resource = findModelEntryObject(resourceName);
-        final Year fromStatic = read(readFromResource(resourceName), Year.class);
-        final Year recycled = read(write(fromStatic, Year.class, resourceName), Year.class);
+        final Vertex resource = findModelEntryObject(resourceName);
+        final Vertex fromStatic = read(readFromResource(resourceName), Vertex.class);
+        final Vertex recycled = read(write(fromStatic, Vertex.class, resourceName), Vertex.class);
         assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
+        assertVertex(resource, fromStatic);
+        assertVertex(resource, recycled);
     }
 
     @Test
-    public void shouldReadWriteYearMonth() throws Exception {
-        final String resourceName = "yearmonth";
+    public void shouldReadWriteVertexProperty() throws Exception {
+        final String resourceName = "traversal-vertexproperty";
 
-        final YearMonth resource = findModelEntryObject(resourceName);
-        final YearMonth fromStatic = read(readFromResource(resourceName), YearMonth.class);
-        final YearMonth recycled = read(write(fromStatic, YearMonth.class, resourceName), YearMonth.class);
+        final VertexProperty resource = findModelEntryObject(resourceName);
+        final VertexProperty fromStatic = read(readFromResource(resourceName), VertexProperty.class);
+        final VertexProperty recycled = read(write(fromStatic, VertexProperty.class, resourceName), VertexProperty.class);
         assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
+        assertVertexProperty(resource, recycled);
+        assertVertexProperty(resource, fromStatic);
     }
 
     @Test
-    public void shouldReadWriteZoneDateTime() throws Exception {
-        final String resourceName = "zoneddatetime";
-
-        // seem to recall this was a known issue for GraphBinary. not going to fuss with it though since the
-        // longer term plan is to likely drop these jvm only types.
-        assumeThat("GraphBinary doesn't quite serialize ZoneDateTime for a perfect round trip",
-                is(getClass().equals(GraphBinaryCompatibilityTest.class)));
+    public void shouldReadWriteMetapropertyVertexProperty() throws Exception {
+        final String resourceName = "meta-vertexproperty";
 
-        final ZonedDateTime resource = findModelEntryObject(resourceName);
-        final ZonedDateTime fromStatic = read(readFromResource(resourceName), ZonedDateTime.class);
-        final ZonedDateTime recycled = read(write(fromStatic, ZonedDateTime.class, resourceName), ZonedDateTime.class);
+        final VertexProperty resource = findModelEntryObject(resourceName);
+        final VertexProperty fromStatic = read(readFromResource(resourceName), VertexProperty.class);
+        final VertexProperty recycled = read(write(fromStatic, VertexProperty.class, resourceName), VertexProperty.class);
         assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
+        assertVertexProperty(resource, recycled);
+        assertVertexProperty(resource, fromStatic);
     }
 
     @Test
-    public void shouldReadWriteZoneOffset() throws Exception {
-        final String resourceName = "zoneoffset";
+    public void shouldReadWriteSetVertexProperty() throws Exception {
+        final String resourceName = "set-cardinality-vertexproperty";
 
-        final ZoneOffset resource = findModelEntryObject(resourceName);
-        final ZoneOffset fromStatic = read(readFromResource(resourceName), ZoneOffset.class);
-        final ZoneOffset recycled = read(write(fromStatic, ZoneOffset.class, resourceName), ZoneOffset.class);
+        final VertexProperty resource = findModelEntryObject(resourceName);
+        final VertexProperty fromStatic = read(readFromResource(resourceName), VertexProperty.class);
+        final VertexProperty recycled = read(write(fromStatic, VertexProperty.class, resourceName), VertexProperty.class);
         assertNotSame(fromStatic, recycled);
         assertEquals(fromStatic, recycled);
         assertEquals(resource, fromStatic);
         assertEquals(resource, recycled);
+        assertVertexProperty(resource, recycled);
+        assertVertexProperty(resource, fromStatic);
     }
 }
diff --git a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/Model.java b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/Model.java
index 32d74966d6..e2e1ee646d 100644
--- a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/Model.java
+++ b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/Model.java
@@ -31,6 +31,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.Scope;
 import org.apache.tinkerpop.gremlin.process.traversal.TextP;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyPath;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.EmptyTraverser;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalMetrics;
 import org.apache.tinkerpop.gremlin.process.traversal.util.MutableMetrics;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
@@ -38,6 +40,10 @@ import org.apache.tinkerpop.gremlin.structure.Column;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedPath;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedProperty;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
 import org.apache.tinkerpop.gremlin.util.TokensV4;
@@ -48,6 +54,7 @@ import java.io.File;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.net.InetAddress;
+import java.nio.ByteBuffer;
 import java.time.Duration;
 import java.time.Instant;
 import java.time.LocalDate;
@@ -62,6 +69,7 @@ import java.time.YearMonth;
 import java.time.ZoneId;
 import java.time.ZoneOffset;
 import java.time.ZonedDateTime;
+import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -78,6 +86,8 @@ import java.util.concurrent.TimeUnit;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
 
+import static org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory.detach;
+
 /**
  * Defines the supported types for IO and the versions (and configurations) to which they apply and are tested.
  *
@@ -98,144 +108,103 @@ public class Model {
 
         // IMPORTANT - the "title" or name of the Entry needs to be unique
 
-        addCoreEntry(File.class, "Class", "");
-        addCoreEntry(new Date(1481750076295L), "Date");
-        addCoreEntry(100.00d, "Double");
-        addCoreEntry(100.00f, "Float", "");
-        addCoreEntry(100, "Integer");
-        addCoreEntry(Arrays.asList(1,"person", true), "List", "List is used to distinguish between different collection types as JSON is not explicit enough for all of Gremlin's requirements.");
-        addCoreEntry(100L, "Long", "");
+        addCoreEntry(new Date(0L), "zero-date");
+        addCoreEntry(new Date(Long.MAX_VALUE), "max-date");
+        addCoreEntry(new Date(Long.MIN_VALUE), "min-date");
+
+        addCoreEntry(Double.MAX_VALUE, "max-double");
+        addCoreEntry(Double.MIN_VALUE, "min-double");
+        addCoreEntry(-Double.MAX_VALUE, "neg-max-double");
+        addCoreEntry(-Double.MIN_VALUE, "neg-min-double");
+        addCoreEntry(Double.NaN, "nan-double");
+        addCoreEntry(Double.POSITIVE_INFINITY, "pos-inf-double");
+        addCoreEntry(Double.NEGATIVE_INFINITY, "neg-inf-double");
+
+        addCoreEntry(Float.MAX_VALUE, "max-float");
+        addCoreEntry(Float.MIN_VALUE, "min-float");
+        addCoreEntry(-Float.MAX_VALUE, "neg-max-float");
+        addCoreEntry(-Float.MIN_VALUE, "neg-min-float");
+        addCoreEntry(Float.NaN, "nan-float");
+        addCoreEntry(Float.POSITIVE_INFINITY, "pos-inf-float");
+        addCoreEntry(Float.NEGATIVE_INFINITY, "neg-inf-float");
+
+        addCoreEntry(Integer.MAX_VALUE, "max-int");
+        addCoreEntry(Integer.MIN_VALUE, "min-int");
+
+        addCoreEntry(Long.MAX_VALUE, "max-long");
+        addCoreEntry(Long.MIN_VALUE, "min-long");
+
+        addCoreEntry(Arrays.asList(1, "person", true, null), "var-type-list", "List is used to distinguish between different collection types as JSON is not explicit enough for all of Gremlin's requirements.");
+        addCoreEntry(Collections.EMPTY_LIST, "empty-list");
 
         final Map<Object,Object> map = new HashMap<>();
         map.put("test", 123);
         map.put(new Date(1481750076295L), "red");
         map.put(Arrays.asList(1,2,3), new Date(1481750076295L));
-        addCoreEntry(map, "Map", "Map is redefined so that to provide the ability to allow for non-String keys, which is not possible in JSON.");
+        map.put(null, null);
+        addCoreEntry(map, "var-type-map", "Map is redefined so that to provide the ability to allow for non-String keys, which is not possible in JSON.");
+        addCoreEntry(Collections.EMPTY_MAP, "empty-map");
+
+        addCoreEntry(new HashSet<>(Arrays.asList(1,"person", true, null)), "var-type-set", "Allows a JSON collection to behave as a Set.");
+        addCoreEntry(Collections.EMPTY_SET, "empty-set");
+
+        addCoreEntry(UUID.fromString("41d2e28a-20a4-4ab0-b379-d810dede3786"), "specified-uuid");
+        addCoreEntry(new UUID(0, 0), "nil-uuid");
+
+        addGraphStructureEntry(graph.edges().next(), "traversal-edge", "");
+        addGraphStructureEntry(DetachedFactory.detach(graph.edges().next(), false), "no-prop-edge", "");
+
+        addGraphStructureEntry(g.V().out().out().path().next(), "traversal-path", "");
+        addGraphStructureEntry(EmptyPath.instance(), "empty-path", "");
+        addGraphStructureEntry(detach(g.V().out().out().path().next(), true), "prop-path", "");
 
-        addCoreEntry(new HashSet<>(Arrays.asList(1,"person", true)), "Set", "Allows a JSON collection to behave as a Set.");
-        addCoreEntry(new java.sql.Timestamp(1481750076295L), "Timestamp", "");
-        addCoreEntry(UUID.fromString("41d2e28a-20a4-4ab0-b379-d810dede3786"), "UUID");
+        addGraphStructureEntry(graph.edges().next().properties().next(), "edge-property", "");
+        addGraphStructureEntry(new DetachedProperty<>("", null), "null-property", "");
 
-        addGraphStructureEntry(graph.edges().next(), "Edge", "");
-        addGraphStructureEntry(g.V().out().out().path().next(), "Path", "");
-        addGraphStructureEntry(graph.edges().next().properties().next(), "Property", "");
-        addGraphStructureEntry(graph, "TinkerGraph", "`TinkerGraph` has a custom serializer that is registered as part of the `TinkerIoRegistry`.");
-        addGraphStructureEntry(graph.vertices().next(), "Vertex", "");
-        addGraphStructureEntry(graph.vertices().next().properties().next(), "VertexProperty", "");
+        addGraphStructureEntry(graph, "tinker-graph", "`TinkerGraph` has a custom serializer that is registered as part of the `TinkerIoRegistry`.");
 
-        addGraphProcessEntry(SackFunctions.Barrier.normSack, "Barrier", "");
+        addGraphStructureEntry(graph.vertices().next(), "traversal-vertex", "");
+        addGraphStructureEntry(DetachedFactory.detach(graph.vertices().next(), false), "no-prop-vertex", "");
+
+        addGraphStructureEntry(graph.vertices().next().properties().next(), "traversal-vertexproperty", "");
+        final Map<String,Object> metaProperties = new HashMap<>();
+        metaProperties.put("a", "b");
+        addGraphStructureEntry(new DetachedVertexProperty<>(1, "person", "stephen", metaProperties), "meta-vertexproperty", "");
+        final Set<Object> setProperty = new HashSet<>();
+        setProperty.add("stephen");
+        setProperty.add("marko");
+        addGraphStructureEntry(new DetachedVertexProperty<>(1, "person", setProperty, metaProperties), "set-cardinality-vertexproperty", "");
 
         final BulkSet<String> bulkSet = new BulkSet<>();
         bulkSet.add("marko", 1);
         bulkSet.add("josh", 2);
-        addGraphProcessEntry(bulkSet, "BulkSet", "");
-
-        addGraphProcessEntry(g.V().hasLabel("person").out().in().tree().asAdmin().getGremlinLang(), "Bytecode", "The following `Bytecode` example represents the traversal of `g.V().hasLabel('person').out().in().tree()`. Obviously the serialized `Bytecode` woudl be quite different for the endless variations of commands that could be used together in the Gremlin language.");
-        addGraphProcessEntry(VertexProperty.Cardinality.list, "Cardinality", "");
-        addGraphProcessEntry(Column.keys, "Column", "");
-        addGraphProcessEntry(Direction.OUT, "Direction", "");
-        addGraphProcessEntry(Operator.sum, "Operator", "");
-        addGraphProcessEntry(Order.shuffle, "Order", "");
-        addGraphProcessEntry(Pick.any, "Pick", "");
-        addGraphProcessEntry(Pop.all, "Pop", "");
-        addGraphProcessEntry(org.apache.tinkerpop.gremlin.util.function.Lambda.function("{ it.get() }"), "Lambda", "");
-        final TraversalMetrics tm = createStaticTraversalMetrics();
-        final MutableMetrics metrics = new MutableMetrics(tm.getMetrics("7.0.0()"));
-        metrics.addNested(new MutableMetrics(tm.getMetrics("3.0.0()")));
-        addGraphProcessEntry(metrics, "Metrics", "");
-        addGraphProcessEntry(P.gt(0), "P", "");
-        addGraphProcessEntry(P.within(1), "P within", "");
-        addGraphProcessEntry(P.without(1,2), "P without", "");
-        addGraphProcessEntry(P.gt(0).and(P.lt(10)), "P and", "");
-        addGraphProcessEntry(P.gt(0).or(P.within(-1, -10, -100)), "P or", "");
-        addGraphProcessEntry(Scope.local, "Scope", "");
-        addGraphProcessEntry(T.label, "T", "");
-        // TextP was only added at 3.4.0 and is not supported with untyped GraphSON of any sort
-        addGraphProcessEntry(TextP.containing("ark"), "TextP", "");
-        addGraphProcessEntry(createStaticTraversalMetrics(), "TraversalMetrics", "");
-        addGraphProcessEntry(g.V().hasLabel("person").asAdmin().nextTraverser(), "Traverser", "");
-
-        final Map<String,Object> requestBindings = new HashMap<>();
-        requestBindings.put("x", 1);
-
-        RequestMessageV4 requestMessage = RequestMessageV4.build("social.V(x)").
-                addBindings(requestBindings).
-                addLanguage("gremlin-groovy").
-                addG("social").
-                addTimeoutMillis(100).
-                addMaterializeProperties(TokensV4.MATERIALIZE_PROPERTIES_ALL).create();
-        addRequestMessageEntry(requestMessage, "Standard Request", "The following `RequestMessageV4` is an example of a request for a script evaluation with an alias that binds the `TraversalSource` of \"g\" to \"social\".");
-
-        ResponseMessageV4 responseMessage;
-        responseMessage = ResponseMessageV4.build().
-                code(HttpResponseStatus.OK).
-                result(Collections.singletonList(graph.vertices().next())).create();
-        addResponseMessageEntry(responseMessage, "Standard Result", "The following `ResponseMessage` is a typical example of the typical successful response Gremlin Server will return when returning results from a script.");
-        responseMessage = ResponseMessageV4.build().
-                code(HttpResponseStatus.INTERNAL_SERVER_ERROR).
-                statusMessage("some error").
-                exception("ServerFailStepException").
-                result(Collections.emptyList()).create();
-        addResponseMessageEntry(responseMessage, "Standard Exception Result", "The following `ResponseMessage` is a typical example of the typical unsuccessful response Gremlin Server will return when returning results from a script.");
-
-        addExtendedEntry(new BigDecimal(new BigInteger("123456789987654321123456789987654321")), "BigDecimal", "");
-        addExtendedEntry(new BigInteger("123456789987654321123456789987654321"), "BigInteger", "");
-        addExtendedEntry(new Byte("1"), "Byte", "");
-        addEntry("Extended", () -> java.nio.ByteBuffer.wrap("some bytes for you".getBytes()), "ByteBuffer", "");
-        addExtendedEntry("x".charAt(0), "Char", "");
-        addExtendedEntry(Duration.ofDays(5), "Duration","The following example is a `Duration` of five days.");
-        try {
-            addEntry("Extended", InetAddress.getByName("localhost"), "InetAddress", "");
-        } catch (Exception ex) {
-            throw new RuntimeException(ex);
-        }
-        addExtendedEntry(Instant.parse("2016-12-14T16:39:19.349Z"), "Instant", "");
-        addExtendedEntry(LocalDate.of(2016, 1, 1), "LocalDate", "");
-        addExtendedEntry(LocalDateTime.of(2016, 1, 1, 12, 30), "LocalDateTime", "");
-        addExtendedEntry(LocalTime.of(12, 30, 45), "LocalTime", "");
-        addExtendedEntry(MonthDay.of(1, 1), "MonthDay", "");
-        addExtendedEntry(OffsetDateTime.parse("2007-12-03T10:15:30+01:00"), "OffsetDateTime", "");
-        addExtendedEntry(OffsetTime.parse("10:15:30+01:00"), "OffsetTime", "");
-        addExtendedEntry(Period.of(1, 6, 15), "Period", "The following example is a `Period` of one year, six months and fifteen days.");
-        addExtendedEntry(new Short("100"), "Short", "");
-        addExtendedEntry(Year.of(2016), "Year", "The following example is of the `Year` \"2016\".");
-        addExtendedEntry(YearMonth.of(2016, 6), "YearMonth", "The following example is a `YearMonth` of \"June 2016\"");
-        addExtendedEntry(ZonedDateTime.of(2016, 12, 23, 12, 12, 24, 36, ZoneId.of("GMT+2")), "ZonedDateTime", "");
-        addExtendedEntry(ZoneOffset.ofHoursMinutesSeconds(3, 6, 9), "ZoneOffset", "The following example is a `ZoneOffset` of three hours, six minutes, and nine seconds.");
-    }
+        addGraphProcessEntry(bulkSet, "var-bulkset", "");
+        addGraphProcessEntry(new BulkSet(), "empty-bulkset", "");
+
+        addGraphProcessEntry(g.V().hasLabel("person").asAdmin().nextTraverser(), "vertex-traverser", "");
+        addGraphProcessEntry(g.V().both().barrier().asAdmin().nextTraverser(), "bulked-traverser", "");
+        addGraphProcessEntry(EmptyTraverser.instance(), "empty-traverser", "");
+
+        addExtendedEntry(new BigDecimal("123.456789987654321123456789987654321"), "pos-bigdecimal", "");
+        addExtendedEntry(new BigDecimal("-123.456789987654321123456789987654321"), "neg-bigdecimal", "");
+
+        addExtendedEntry(new BigInteger("123456789987654321123456789987654321"), "pos-biginteger", "");
+        addExtendedEntry(new BigInteger("-123456789987654321123456789987654321"), "neg-biginteger", "");
+
+        addExtendedEntry(Byte.MAX_VALUE, "max-byte", "");
+        addExtendedEntry(Byte.MIN_VALUE, "min-byte", "");
+
+        addExtendedEntry(ByteBuffer.wrap(new byte[0]), "empty-binary", "");
+        addEntry("Extended", () -> java.nio.ByteBuffer.wrap("some bytes for you".getBytes()), "str-binary", "");
+
+        addExtendedEntry(Duration.ZERO, "zero-duration","The following example is a zero `Duration`");
+        addExtendedEntry(ChronoUnit.FOREVER.getDuration(), "forever-duration","");
+
+        addExtendedEntry(OffsetDateTime.MAX, "max-offsetdatetime", "");
+        addExtendedEntry(OffsetDateTime.MIN, "min-offsetdatetime", "");
 
-    private static DefaultTraversalMetrics createStaticTraversalMetrics() {
-        // based on g.V().hasLabel("person").out().out().tree().profile().next()
-        final List<MutableMetrics> traversalMutableMetrics = new ArrayList<>();
-        final MutableMetrics m7 = new MutableMetrics("7.0.0()", "TinkerGraphStep(vertex,[~label.eq(person)])");
-        m7.setDuration(100, TimeUnit.MILLISECONDS);
-        m7.setCount("traverserCount", 4);
-        m7.setCount("elementCount", 4);
-        m7.setAnnotation("percentDur", 25.0d);
-        traversalMutableMetrics.add(m7);
-
-        final MutableMetrics m2 = new MutableMetrics("2.0.0()", "VertexStep(OUT,vertex)");
-        m2.setDuration(100, TimeUnit.MILLISECONDS);
-        m2.setCount("traverserCount", 13);
-        m2.setCount("elementCount", 13);
-        m2.setAnnotation("percentDur", 25.0d);
-        traversalMutableMetrics.add(m2);
-
-        final MutableMetrics m3 = new MutableMetrics("3.0.0()", "VertexStep(OUT,vertex)");
-        m3.setDuration(100, TimeUnit.MILLISECONDS);
-        m3.setCount("traverserCount", 7);
-        m3.setCount("elementCount", 7);
-        m3.setAnnotation("percentDur", 25.0d);
-        traversalMutableMetrics.add(m3);
-
-        final MutableMetrics m4 = new MutableMetrics("4.0.0()", "TreeStep");
-        m4.setDuration(100, TimeUnit.MILLISECONDS);
-        m4.setCount("traverserCount", 1);
-        m4.setCount("elementCount", 1);
-        m4.setAnnotation("percentDur", 25.0d);
-        traversalMutableMetrics.add(m4);
-
-        return new DefaultTraversalMetrics(4000, traversalMutableMetrics);
+        addExtendedEntry(Short.MIN_VALUE, "min-short", "");
+        addExtendedEntry(Short.MAX_VALUE, "max-short", "");
     }
 
     public static Model instance() {
diff --git a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphbinary/GraphBinaryCompatibilityTest.java b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphbinary/GraphBinaryCompatibilityTest.java
index bc1fc271ab..c65568efab 100644
--- a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphbinary/GraphBinaryCompatibilityTest.java
+++ b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphbinary/GraphBinaryCompatibilityTest.java
@@ -22,6 +22,8 @@ import io.netty.buffer.ByteBufAllocator;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.output.ByteArrayOutputStream;
+import org.apache.tinkerpop.gremlin.structure.graphbinary.GraphBinaryAccess;
+import org.apache.tinkerpop.gremlin.structure.graphson.GraphSONAccess;
 import org.apache.tinkerpop.gremlin.structure.io.AbstractTypedCompatibilityTest;
 import org.apache.tinkerpop.gremlin.structure.io.Buffer;
 import org.apache.tinkerpop.gremlin.structure.io.binary.GraphBinaryReader;
@@ -42,8 +44,8 @@ import java.util.Arrays;
 public class GraphBinaryCompatibilityTest extends AbstractTypedCompatibilityTest {
 
     private static final ByteBufAllocator allocator = ByteBufAllocator.DEFAULT;
-    private static final GraphBinaryWriter writerV1 = new GraphBinaryWriter();
-    private static final GraphBinaryReader readerV1 = new GraphBinaryReader();
+    private static final GraphBinaryWriter writerV4 = new GraphBinaryWriter();
+    private static final GraphBinaryReader readerV4 = new GraphBinaryReader();
     private static final NettyBufferFactory bufferFactory = new NettyBufferFactory();
 
     private static final String testCaseDataPath = root.getPath() + File.separator + "test-case-data" + File.separator
@@ -56,7 +58,7 @@ public class GraphBinaryCompatibilityTest extends AbstractTypedCompatibilityTest
     @Parameterized.Parameters(name = "expect({0})")
     public static Iterable<Object[]> data() {
         return Arrays.asList(new Object[][]{
-                {"v1", readerV1, writerV1 },
+                {"v4", readerV4, writerV4 },
         });
     }
 
@@ -77,7 +79,7 @@ public class GraphBinaryCompatibilityTest extends AbstractTypedCompatibilityTest
     @Override
     protected byte[] readFromResource(final String resource) throws IOException {
         final String testResource = resource + "-" + compatibility + ".gbin";
-        return IOUtils.toByteArray(getClass().getResourceAsStream(testResource));
+        return IOUtils.toByteArray(GraphBinaryAccess.class.getResourceAsStream(testResource));
     }
 
     @Override
diff --git a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypedCompatibilityTest.java b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypedCompatibilityTest.java
index 643e118bcd..6189afb104 100644
--- a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypedCompatibilityTest.java
+++ b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypedCompatibilityTest.java
@@ -19,7 +19,10 @@
 package org.apache.tinkerpop.gremlin.structure.io.graphson;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.tinkerpop.gremlin.TestHelper;
+import org.apache.tinkerpop.gremlin.structure.graphson.GraphSONAccess;
 import org.apache.tinkerpop.gremlin.structure.io.AbstractTypedCompatibilityTest;
+import org.apache.tinkerpop.gremlin.structure.io.IoTest;
 import org.apache.tinkerpop.gremlin.structure.io.Model;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3;
@@ -40,17 +43,6 @@ import java.util.Arrays;
 @RunWith(Parameterized.class)
 public class GraphSONTypedCompatibilityTest extends AbstractTypedCompatibilityTest {
 
-    private static ObjectMapper mapperV2 = GraphSONMapper.build().
-            addRegistry(TinkerIoRegistryV2.instance()).
-            typeInfo(TypeInfo.PARTIAL_TYPES).
-            addCustomModule(GraphSONXModuleV2.build()).
-            version(GraphSONVersion.V2_0).create().createMapper();
-
-    private static ObjectMapper mapperV3 = GraphSONMapper.build().
-            addRegistry(TinkerIoRegistryV3.instance()).
-            addCustomModule(GraphSONXModuleV3.build()).
-            version(GraphSONVersion.V3_0).create().createMapper();
-
     private static ObjectMapper mapperV4 = GraphSONMapper.build().
             addRegistry(TinkerIoRegistryV3.instance()).
             addCustomModule(GraphSONXModuleV3.build()).
@@ -67,8 +59,6 @@ public class GraphSONTypedCompatibilityTest extends AbstractTypedCompatibilityTe
     @Parameterized.Parameters(name = "expect({0})")
     public static Iterable<Object[]> data() {
         return Arrays.asList(new Object[][]{
-                {"v2", mapperV2 },
-                {"v3", mapperV3 },
                 {"v4", mapperV4 },
         });
     }
@@ -87,7 +77,7 @@ public class GraphSONTypedCompatibilityTest extends AbstractTypedCompatibilityTe
     @Override
     protected byte[] readFromResource(final String resource) throws IOException {
         final String testResource = resource + "-" + compatibility + ".json";
-        return IOUtils.toByteArray(getClass().getResourceAsStream(testResource));
+        return IOUtils.toByteArray(GraphSONAccess.class.getResourceAsStream(testResource));
     }
 
     @Override