You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2025/02/21 19:20:17 UTC

(tinkerpop) branch master updated (31fac9e5ab -> 1ecb2c3b5d)

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

spmallette pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git


    from 31fac9e5ab Merge branch '3.7-dev'
     add c9051bdef1 TINKERPOP-3137 Allowed null as a Map value in mergeV/E
     new 1ecb2c3b5d Merge branch '3.7-dev'

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 CHANGELOG.asciidoc                                 |  3 +-
 docs/src/dev/developer/for-committers.asciidoc     |  4 +-
 .../traversal/step/map/MergeElementStep.java       |  9 +++--
 .../traversal/step/map/MergeVertexStepTest.java    | 15 ++++++--
 .../gremlin-javascript/test/cucumber/gremlin.js    |  4 ++
 gremlin-python/src/main/python/radish/gremlin.py   |  4 ++
 .../gremlin/test/features/map/AddEdge.feature      |  1 +
 .../gremlin/test/features/map/AddVertex.feature    |  1 +
 .../gremlin/test/features/map/MergeEdge.feature    | 44 +++++++++++++++++++++-
 .../gremlin/test/features/map/MergeVertex.feature  | 38 ++++++++++++++++++-
 10 files changed, 111 insertions(+), 12 deletions(-)


(tinkerpop) 01/01: Merge branch '3.7-dev'

Posted by sp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

spmallette pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 1ecb2c3b5d5837bd5424622d5a3ae8d28084caa9
Merge: 31fac9e5ab c9051bdef1
Author: Stephen Mallette <st...@amazon.com>
AuthorDate: Fri Feb 21 14:20:01 2025 -0500

    Merge branch '3.7-dev'

 CHANGELOG.asciidoc                                 |  3 +-
 docs/src/dev/developer/for-committers.asciidoc     |  4 +-
 .../traversal/step/map/MergeElementStep.java       |  9 +++--
 .../traversal/step/map/MergeVertexStepTest.java    | 15 ++++++--
 .../gremlin-javascript/test/cucumber/gremlin.js    |  4 ++
 gremlin-python/src/main/python/radish/gremlin.py   |  4 ++
 .../gremlin/test/features/map/AddEdge.feature      |  1 +
 .../gremlin/test/features/map/AddVertex.feature    |  1 +
 .../gremlin/test/features/map/MergeEdge.feature    | 44 +++++++++++++++++++++-
 .../gremlin/test/features/map/MergeVertex.feature  | 38 ++++++++++++++++++-
 10 files changed, 111 insertions(+), 12 deletions(-)

diff --cc docs/src/dev/developer/for-committers.asciidoc
index e18597df96,5e91edc6db..f3b9c1fc68
--- a/docs/src/dev/developer/for-committers.asciidoc
+++ b/docs/src/dev/developer/for-committers.asciidoc
@@@ -563,7 -563,8 +563,9 @@@ tag when one is necessary will cause pr
  
  * `@AllowNullPropertyValues` - The scenario requires that the graph be configured with `AllowNullPropertyValues` as
  `true` (meaning that it can store `null` values).
+ * `@DisallowNullPropertyValues` - The scenario requires that the graph be configured with `AllowNullPropertyValues` as
+ `false` (meaning that it cannot store `null` values).
 +* `@GraphComputerOnly` - The scenario is only supported with `GraphComputer`.
  * `@GraphComputerVerificationInjectionNotSupported` - The scenario will not work on with `GraphComputer` because the
  `inject()` step is not supported.
  * `@GraphComputerVerificationMidVNotSupported` - The scenario will not work on with `GraphComputer` because the
@@@ -593,10 -592,8 +595,10 @@@ best example of this sort of test woul
  ** `@WithSeedStrategy`
  ** `@WithSubgraphStrategy`
  
 -Tag filters can be applied to Intellij at execution time by adding a system properties of
 -`-Dcucumber.filter.tags=<step-filter>`.
 +Tag filters can be applied to Intellij at execution time by adding a system property of
 +`-Dcucumber.filter.tags=<tag-expression>`. In addition, the scenarios that pass the `<tag-expression>` can be further
 +filtered by name with `-Dcucumber.filter.name=<scenario-regex>`. Note that these settings will override those
- configured by `CucumberOptions` on "*FeatureTest" setups. 
++configured by `CucumberOptions` on "*FeatureTest" setups.
  
  [[gremlin-socket-server-tests]]
  === Gremlin Socket Server Tests
diff --cc gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
index 109f94553e,d93e55473a..1bb3e8a6b3
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
@@@ -1015,118 -868,115 +1015,122 @@@ const gremlins = 
      g_injectXa_null_bX_mergeXa_null_cX: [function({g, xx1, xx2}) { return g.inject(xx1).merge(xx2) }], 
      g_injectX3_threeX_mergeXfive_three_7X: [function({g, xx1, xx2}) { return g.inject(xx1).merge(xx2) }], 
      g_V_asXnameX_projectXnameX_byXnameX_mergeXother_blueprintX: [function({g, xx1}) { return g.V().as("name").project("name").by("name").merge(xx1) }], 
 -    g_V_hasXname_markoX_elementMap_mergeXV_hasXname_lopX_elementMapX: [function({g}) { return g.V().has("name","marko").elementMap().merge(__.V().has("name","lop").elementMap()) }], 
 -    g_V_mergeEXlabel_selfX_optionXonMatch_emptyX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29).addE("self") }, function({g, xx1}) { return g.V().mergeE(xx1).option(Merge.onMatch,new Map([])) }, function({g, xx1}) { return g.E() }, function({g, xx1}) { return g.E().properties() }, function({g, xx1}) { return g.V() }], 
 -    g_V_mergeEXlabel_selfX_optionXonMatch_nullX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29).addE("self") }, function({g, xx1}) { return g.V().mergeE(xx1).option(Merge.onMatch,null) }, function({g, xx1}) { return g.E() }, function({g, xx1}) { return g.E().properties() }, function({g, xx1}) { return g.V() }], 
 -    g_V_mergeEXemptyX_optionXonCreate_nullX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.V().as("v").mergeE(xx1).option(Merge.onCreate,null).option(Merge.outV,__.select("v")).option(Merge.inV,__.select("v")) }, function({g, xx1}) { return g.E() }, function({g, xx1}) { return g.V() }], 
 -    g_mergeEXemptyX_exists: [function({g}) { return g.addV("person").property("name","marko").property("age",29).addE("self") }, function({g}) { return g.mergeE(new Map([])) }, function({g}) { return g.E() }, function({g}) { return g.V() }], 
 -    g_mergeEXemptyX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.mergeE(new Map([])) }], 
 -    g_V_mergeEXemptyX_two_exist: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29).addV("person").property("name","vadas").property("age",27) }, function({g, xx1}) { return g.V().as("v").mergeE(xx1).option(Merge.outV,__.select("v")).option(Merge.inV,__.select("v")) }, function({g, xx1}) { return g.E() }, function({g, xx1}) { return g.V() }], 
 -    g_mergeEXnullX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.mergeE(null) }], 
 -    g_V_mergeEXnullX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.V().mergeE(null) }], 
 -    g_mergeEXlabel_knows_out_marko_in_vadasX: [function({g, xx1}) { return g.addV("person").property("name","marko").addV("person").property("name","vadas") }, function({g, xx1}) { return g.mergeE(xx1) }, function({g, xx1}) { return g.V().has("person","name","marko").out("knows").has("person","name","vadas") }], 
 -    g_withSideEffectXa_label_knows_out_marko_in_vadasX_mergeEXselectXaXX: [function({g, xx1}) { return g.addV("person").property("name","marko").addV("person").property("name","vadas") }, function({g, xx1}) { return g.withSideEffect("a",xx1).mergeE(__.select("a")) }, function({g, xx1}) { return g.V().has("person","name","marko").out("knows").has("person","name","vadas") }], 
 -    g_mergeEXlabel_knows_out_marko1_in_vadas1X: [function({g, xx1}) { return g.addV("person").property("name","marko").addV("person").property("name","vadas") }, function({g, xx1}) { return g.mergeE(xx1) }, function({g, xx1}) { return g.V().has("person","name","marko").out("knows").has("person","name","vadas") }], 
 -    g_mergeEXlabel_knows_out_marko_in_vadas_weight_05X_exists: [function({g, xx1}) { return g.addV("person").property("name","marko").as("a").addV("person").property("name","vadas").as("b").addE("knows").from_("a").to("b") }, function({g, xx1}) { return g.mergeE(xx1) }, function({g, xx1}) { return g.V().has("person","name","marko").outE("knows").has("weight",0.5).inV().has("person","name","vadas") }, function({g, xx1}) { return g.V().has("person","name","marko").out("knows").has("person [...]
 +    g_V_hasXname_markoX_elementMap_mergeXV_hasXname_lopX_elementMapX: [function({g}) { return g.V().has("name", "marko").elementMap().merge(__.V().has("name", "lop").elementMap()) }], 
 +    g_V_mergeEXlabel_selfX_optionXonMatch_emptyX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29).addE("self") }, function({g, xx1}) { return g.V().mergeE(xx1).option(Merge.onMatch, new Map([])) }, function({g, xx1}) { return g.E() }, function({g, xx1}) { return g.E().properties() }, function({g, xx1}) { return g.V() }], 
 +    g_V_mergeEXlabel_selfX_optionXonMatch_nullX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29).addE("self") }, function({g, xx1}) { return g.V().mergeE(xx1).option(Merge.onMatch, null) }, function({g, xx1}) { return g.E() }, function({g, xx1}) { return g.E().properties() }, function({g, xx1}) { return g.V() }], 
 +    g_V_mergeEXemptyX_optionXonCreate_nullX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1}) { return g.V().as("v").mergeE(xx1).option(Merge.onCreate, null).option(Merge.outV, __.select("v")).option(Merge.inV, __.select("v")) }, function({g, xx1}) { return g.E() }, function({g, xx1}) { return g.V() }], 
 +    g_V_mergeE_inlineXemptyX_optionXonCreate_nullX: [function({g}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g}) { return g.V().as("v").mergeE(new Map([[T.label, "self"], [Direction.OUT, Merge.outV], [Direction.IN, Merge.inV]])).option(Merge.onCreate, null).option(Merge.outV, __.select("v")).option(Merge.inV, __.select("v")) }, function({g}) { return g.E() }, function({g}) { return g.V() }], 
 +    g_mergeEXemptyX_exists: [function({g}) { return g.addV("person").property("name", "marko").property("age", 29).addE("self") }, function({g}) { return g.mergeE(new Map([])) }, function({g}) { return g.E() }, function({g}) { return g.V() }], 
 +    g_mergeEXemptyX: [function({g}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g}) { return g.mergeE(new Map([])) }], 
 +    g_V_mergeEXemptyX_two_exist: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29).addV("person").property("name", "vadas").property("age", 27) }, function({g, xx1}) { return g.V().as("v").mergeE(xx1).option(Merge.outV, __.select("v")).option(Merge.inV, __.select("v")) }, function({g, xx1}) { return g.E() }, function({g, xx1}) { return g.V() }], 
 +    g_V_mergeE_inlineXemptyX_two_exist: [function({g}) { return g.addV("person").property("name", "marko").property("age", 29).addV("person").property("name", "vadas").property("age", 27) }, function({g}) { return g.V().as("v").mergeE(new Map([[T.label, "self"], [Direction.OUT, Merge.outV], [Direction.IN, Merge.inV]])).option(Merge.outV, __.select("v")).option(Merge.inV, __.select("v")) }, function({g}) { return g.E() }, function({g}) { return g.V() }], 
 +    g_mergeEXnullX: [function({g}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g}) { return g.mergeE(null) }], 
 +    g_mergeEXnullvarX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1}) { return g.mergeE(xx1) }], 
 +    g_V_limitX1X_mergeEXnullvarX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1}) { return g.V().limit(1).mergeE(xx1) }], 
 +    g_V_mergeEXnullX: [function({g}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g}) { return g.V().mergeE(null) }], 
 +    g_mergeEXlabel_knows_out_marko_in_vadasX: [function({g, xx1}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1}) { return g.mergeE(xx1) }, function({g, xx1}) { return g.V().has("person", "name", "marko").out("knows").has("person", "name", "vadas") }], 
 +    g_withSideEffectXa_label_knows_out_marko_in_vadasX_mergeEXselectXaXX: [function({g, xx1}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1}) { return g.withSideEffect("a", xx1).mergeE(__.select("a")) }, function({g, xx1}) { return g.V().has("person", "name", "marko").out("knows").has("person", "name", "vadas") }], 
 +    g_mergeEXlabel_knows_out_marko1_in_vadas1X: [function({g, xx1}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1}) { return g.mergeE(xx1) }, function({g, xx1}) { return g.V().has("person", "name", "marko").out("knows").has("person", "name", "vadas") }], 
 +    g_mergeEXlabel_knows_out_marko_in_vadas_weight_05X_exists: [function({g, xx1}) { return g.addV("person").property("name", "marko").as("a").addV("person").property("name", "vadas").as("b").addE("knows").from_("a").to("b") }, function({g, xx1}) { return g.mergeE(xx1) }, function({g, xx1}) { return g.V().has("person", "name", "marko").outE("knows").has("weight", 0.5).inV().has("person", "name", "vadas") }, function({g, xx1}) { return g.V().has("person", "name", "marko").out("knows").ha [...]
      g_mergeEXlabel_knows_out_marko_in_vadas_weight_05X: [function({g, xx1}) { return g.mergeE(xx1) }], 
 -    g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX: [function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2).option(Merge.onMatch,xx3) }], 
 -    g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name","marko").as("a").addV("person").property("name","vadas").as("b").addE("knows").from_("a").to("b") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2).option(Merge.onMatch,xx3) }, function({g, xx1, xx3, xx2}) { return g.V() }, function({g, xx1, xx3, xx2}) { return g.E().hasLabel("kno [...]
 -    g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name","marko").as("a").addV("person").property("name","vadas").as("b").addE("knows").from_("a").to("b").property("created","Y") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2).option(Merge.onMatch,xx3) }, function({g, xx1, xx3, xx2}) { return g.V() }, function({g, xx1, xx3, xx [...]
 -    g_V_hasXperson_name_marko_X_mergeEXlabel_knowsX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name","marko").as("a").addV("person").property("name","vadas").as("b").addE("knows").from_("a").to("b").property("created","Y").addE("knows").from_("a").to("b") }, function({g, xx1, xx3, xx2}) { return g.V().has("person","name","marko").mergeE(xx1).option(Merge.onCreate,xx2).option(Merge.onMatch,xx3) }, [...]
 -    g_injectXlabel_knows_out_marko_in_vadasX_mergeE: [function({g, xx1}) { return g.addV("person").property("name","marko").addV("person").property("name","vadas") }, function({g, xx1}) { return g.inject(xx1).mergeE() }, function({g, xx1}) { return g.V().has("person","name","marko").out("knows").has("person","name","vadas") }], 
 -    g_mergeEXlabel_knows_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name","marko").as("a").addV("person").property("name","vadas").as("b").addE("knows").from_("a").to("b").property("created","Y").addE("knows").from_("b").to("a").property("created","Y") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2).option(Merge.onMatch,xx3) }, function({g, xx1, xx3, xx [...]
 -    g_mergeEXlabel_knows_out_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name","marko").as("a").addV("person").property("name","vadas").as("b").addE("knows").from_("a").to("b").property("created","Y").addE("knows").from_("b").to("a").property("created","Y") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2).option(Merge.onMatch,xx3) }, function({g, xx1, xx3, x [...]
 -    g_mergeEXout_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name","marko").as("a").addV("person").property("name","vadas").as("b").addE("knows").from_("a").to("b").property("created","Y").addE("knows").from_("b").to("a").property("created","Y") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2).option(Merge.onMatch,xx3) }, function({g, xx1, xx3, xx2}) { retur [...]
 -    g_V_hasXperson_name_marko_X_mergeEXlabel_self_out_vadas1_in_vadas1X: [function({g, xx1}) { return g.addV("person").property("name","marko").addV("person").property("name","vadas") }, function({g, xx1}) { return g.V().has("person","name","marko").mergeE(xx1) }, function({g, xx1}) { return g.V() }, function({g, xx1}) { return g.E() }, function({g, xx1}) { return g.E().hasLabel("self").bothV().has("name","vadas") }], 
 -    g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX_exists: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name","marko").as("a").addV("person").property("name","vadas").as("b").addE("knows").from_("a").to("b") }, function({g, xx1, xx3, xx2}) { return g.withSideEffect("c",xx2).withSideEffect("m",xx3).mergeE(xx1).option(Merge.onCreate,__.select("c")).option(Merge.onMatch [...]
 -    g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name","marko").as("a").addV("person").property("name","vadas").as("b") }, function({g, xx1, xx3, xx2}) { return g.withSideEffect("c",xx2).withSideEffect("m",xx3).mergeE(xx1).option(Merge.onCreate,__.select("c")).option(Merge.onMatch,__.select("m")) }, function({g, xx1, xx [...]
 -    g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko1_in_vadas1X_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name","marko").as("a").addV("person").property("name","vadas").as("b") }, function({g, xx1, xx3, xx2}) { return g.withSideEffect("c",xx2).withSideEffect("m",xx3).mergeE(xx1).option(Merge.onCreate,__.select("c")).option(Merge.onMatch,__.select("m")) }, function({g, xx1,  [...]
 -    g_mergeEXlabel_knows_out_marko_in_vadasX_aliased_direction: [function({g, xx1}) { return g.addV("person").property("name","marko").addV("person").property("name","vadas") }, function({g, xx1}) { return g.mergeE(xx1) }, function({g, xx1}) { return g.V().has("person","name","marko").out("knows").has("person","name","vadas") }], 
 -    g_injectXlabel_knows_out_marko_in_vadas_label_self_out_vadas_in_vadasX: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").addV("person").property("name","vadas") }, function({g, xx1, xx2}) { return g.inject(xx1,xx2).mergeE() }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.E() }, function({g, xx1, xx2}) { return g.V().has("person","name","marko").out("knows").has("person","name","vadas") }, function({g, xx1, xx2}) { return g.V [...]
 -    g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_sideEffectXpropertiesXweightX_dropX_selectXmXX_exists: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name","marko").as("a").addV("person").property("name","vadas").as("b").addE("knows").property("weight",1.0).from_("a").to("b") }, function({g, xx1, xx3, xx2}) { return g.withSideEffect("c",xx2).withSideEffect("m",xx3).mergeE(xx1) [...]
 -    g_mergeE_with_outVinV_options_map: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name","marko").addV("person").property("name","vadas") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.outV,xx2).option(Merge.inV,xx3) }, function({g, xx1, xx3, xx2}) { return g.V() }, function({g, xx1, xx3, xx2}) { return g.V().has("name","marko").out("knows").has("name","vadas") }], 
 -    g_mergeE_with_outVinV_options_select: [function({g, xx1, vid2, vid1}) { return g.addV("person").property("name","marko").addV("person").property("name","vadas") }, function({g, xx1, vid2, vid1}) { return g.V(vid1).as("x").V(vid2).as("y").mergeE(xx1).option(Merge.outV,__.select("x")).option(Merge.inV,__.select("y")) }, function({g, xx1, vid2, vid1}) { return g.V() }, function({g, xx1, vid2, vid1}) { return g.V().has("name","marko").out("knows").has("name","vadas") }], 
 -    g_mergeE_with_eid_specified_and_inheritance_1: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").addV("person").property("name","vadas") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.E() }, function({g, xx1, xx2}) { return g.E("201") }, function({g, xx1, xx2}) { return g.V().has("name","marko").out("knows").has("name","vadas") }], 
 -    g_mergeE_with_eid_specified_and_inheritance_2: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").addV("person").property("name","vadas") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.E() }, function({g, xx1, xx2}) { return g.E("201") }, function({g, xx1, xx2}) { return g.V().has("name","marko").out("knows").has("name","vadas") }], 
 -    g_mergeE_outV_override_prohibited: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").addV("person").property("name","vadas") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2) }], 
 -    g_mergeE_inV_override_prohibited: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").addV("person").property("name","vadas") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2) }], 
 -    g_mergeE_label_override_prohibited: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").addV("person").property("name","vadas") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2) }], 
 -    g_mergeE_id_override_prohibited: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").addV("person").property("name","vadas") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2) }], 
 -    g_mergeV_mergeE_combination_new_vertices: [function({g, xx1, xx3, xx2}) { return g.mergeV(xx1).as("outV").mergeV(xx2).as("inV").mergeE(xx3).option(Merge.outV,__.select("outV")).option(Merge.inV,__.select("inV")) }, function({g, xx1, xx3, xx2}) { return g.V() }, function({g, xx1, xx3, xx2}) { return g.E() }, function({g, xx1, xx3, xx2}) { return g.V().has("name","marko").out("knows").has("name","vadas") }], 
 -    g_mergeV_mergeE_combination_existing_vertices: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name","marko").addV("person").property("name","vadas") }, function({g, xx1, xx3, xx2}) { return g.mergeV(xx1).as("outV").mergeV(xx2).as("inV").mergeE(xx3).option(Merge.outV,__.select("outV")).option(Merge.inV,__.select("inV")) }, function({g, xx1, xx3, xx2}) { return g.V() }, function({g, xx1, xx3, xx2}) { return g.E() }, function({g, xx1, xx3, xx2}) { return g.V().has("n [...]
 -    g_V_asXvX_mergeEXxx1X_optionXMerge_onMatch_xx2X_optionXMerge_outV_selectXvXX_optionXMerge_inV_selectXvXX: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.V().as("v").mergeE(xx1).option(Merge.onMatch,xx2).option(Merge.outV,__.select("v")).option(Merge.inV,__.select("v")) }], 
 -    g_V_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_sideEffectXpropertyXweight_0XX_constantXemptyXX: [function({g, xx1}) { return g.addV("person").property("name","marko").as("a").addV("person").property("name","vadas").as("b").addE("knows").property("weight",1).from_("a").to("b") }, function({g, xx1}) { return g.V().mergeE(xx1).option(Merge.onMatch,__.sideEffect(__.property("weight",0)).constant(new Map([]))) }], 
 -    g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_sideEffectXpropertyXweight_0XX_constantXemptyXX: [function({g, xx1}) { return g.addV("person").property("name","marko").as("a").addV("person").property("name","vadas").as("b").addE("knows").property("weight",1).from_("a").to("b") }, function({g, xx1}) { return g.mergeE(xx1).option(Merge.onMatch,__.sideEffect(__.property("weight",0)).constant(new Map([]))) }, function({g, xx1}) { return g.V() }, function({g, xx1}) { return g.E() [...]
 -    g_injectXlist1_list2X_mergeEXlimitXlocal_1XX_optionXonCreate_rangeXlocal_1_2XX_optionXonMatch_tailXlocalXX_to_match: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29).as("marko").addV("person").property("name","vadas").property("age",27).as("vadas").addV("software").property("name","lop").property("lang","java").as("lop").addV("person").property("name","josh").property("age",32).as("josh").addV("software").property("name","ripple").proper [...]
 -    g_injectXlist1_list2X_mergeEXlimitXlocal_1XX_optionXonCreate_rangeXlocal_1_2XX_optionXonMatch_tailXlocalXX_to_create: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29).as("marko").addV("person").property("name","vadas").property("age",27).as("vadas").addV("software").property("name","lop").property("lang","java").as("lop").addV("person").property("name","josh").property("age",32).as("josh").addV("software").property("name","ripple").prope [...]
 -    g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_weight_nullX_allowed: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").as("a").addV("person").property("name","vadas").as("b").addE("knows").from_("a").to("b").property("weight",1.0) }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onMatch,xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.E().hasLabel("knows") }, function({g, xx1, xx2}) { return g.E().h [...]
 -    g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_weight_nullX: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").as("a").addV("person").property("name","vadas").as("b").addE("knows").from_("a").to("b").property("weight",1.0) }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onMatch,xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.E().hasLabel("knows") }, function({g, xx1, xx2}) { return g.E().hasLabel( [...]
 -    g_mergeVXemptyX_optionXonMatch_nullX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.mergeV(new Map([])).option(Merge.onMatch,null) }, function({g}) { return g.V().has("person","name","marko").has("age",29) }], 
 -    g_V_mergeVXemptyX_optionXonMatch_nullX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.V().mergeV(new Map([])).option(Merge.onMatch,null) }, function({g}) { return g.V().has("person","name","marko").has("age",29) }], 
 -    g_mergeVXnullX_optionXonCreate_label_null_name_markoX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.mergeV(xx1) }], 
 -    g_V_mergeVXnullX_optionXonCreate_label_null_name_markoX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.V().mergeV(xx1) }], 
 -    g_mergeVXlabel_person_name_stephenX_optionXonCreate_nullX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.mergeV(xx1).option(Merge.onCreate,null) }, function({g, xx1}) { return g.V() }, function({g, xx1}) { return g.V().has("person","name","marko") }, function({g, xx1}) { return g.V().has("person","name","stephen") }], 
 -    g_V_mergeVXlabel_person_name_stephenX_optionXonCreate_nullX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.V().mergeV(xx1).option(Merge.onCreate,null) }, function({g, xx1}) { return g.V() }, function({g, xx1}) { return g.V().has("person","name","marko") }, function({g, xx1}) { return g.V().has("person","name","stephen") }], 
 -    g_mergeVXnullX_optionXonCreate_emptyX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.mergeV(null).option(Merge.onCreate,new Map([])) }, function({g}) { return g.V() }], 
 -    g_V_mergeVXnullX_optionXonCreate_emptyX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.V().mergeV(null).option(Merge.onCreate,new Map([])) }, function({g}) { return g.V() }], 
 +    g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX: [function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate, xx2).option(Merge.onMatch, xx3) }], 
 +    g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name", "marko").as("a").addV("person").property("name", "vadas").as("b").addE("knows").from_("a").to("b") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate, xx2).option(Merge.onMatch, xx3) }, function({g, xx1, xx3, xx2}) { return g.V() }, function({g, xx1, xx3, xx2}) { return g.E().hasLabel( [...]
 +    g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name", "marko").as("a").addV("person").property("name", "vadas").as("b").addE("knows").from_("a").to("b").property("created", "Y") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate, xx2).option(Merge.onMatch, xx3) }, function({g, xx1, xx3, xx2}) { return g.V() }, function({g, xx1, xx [...]
 +    g_V_hasXperson_name_marko_X_mergeEXlabel_knowsX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name", "marko").as("a").addV("person").property("name", "vadas").as("b").addE("knows").from_("a").to("b").property("created", "Y").addE("knows").from_("a").to("b") }, function({g, xx1, xx3, xx2}) { return g.V().has("person", "name", "marko").mergeE(xx1).option(Merge.onCreate, xx2).option(Merge.onMatch,  [...]
 +    g_injectXlabel_knows_out_marko_in_vadasX_mergeE: [function({g, xx1}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1}) { return g.inject(xx1).mergeE() }, function({g, xx1}) { return g.V().has("person", "name", "marko").out("knows").has("person", "name", "vadas") }], 
 +    g_mergeEXlabel_knows_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name", "marko").as("a").addV("person").property("name", "vadas").as("b").addE("knows").from_("a").to("b").property("created", "Y").addE("knows").from_("b").to("a").property("created", "Y") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate, xx2).option(Merge.onMatch, xx3) }, function({g, xx1, x [...]
 +    g_mergeEXlabel_knows_out_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name", "marko").as("a").addV("person").property("name", "vadas").as("b").addE("knows").from_("a").to("b").property("created", "Y").addE("knows").from_("b").to("a").property("created", "Y") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate, xx2).option(Merge.onMatch, xx3) }, function({g, xx1,  [...]
 +    g_mergeEXout_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name", "marko").as("a").addV("person").property("name", "vadas").as("b").addE("knows").from_("a").to("b").property("created", "Y").addE("knows").from_("b").to("a").property("created", "Y") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate, xx2).option(Merge.onMatch, xx3) }, function({g, xx1, xx3, xx2}) { [...]
 +    g_V_hasXperson_name_marko_X_mergeEXlabel_self_out_vadas1_in_vadas1X: [function({g, xx1}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1}) { return g.V().has("person", "name", "marko").mergeE(xx1) }, function({g, xx1}) { return g.V() }, function({g, xx1}) { return g.E() }, function({g, xx1}) { return g.E().hasLabel("self").bothV().has("name", "vadas") }], 
 +    g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX_exists: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name", "marko").as("a").addV("person").property("name", "vadas").as("b").addE("knows").from_("a").to("b") }, function({g, xx1, xx3, xx2}) { return g.withSideEffect("c", xx2).withSideEffect("m", xx3).mergeE(xx1).option(Merge.onCreate, __.select("c")).option(Merge.on [...]
 +    g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name", "marko").as("a").addV("person").property("name", "vadas").as("b") }, function({g, xx1, xx3, xx2}) { return g.withSideEffect("c", xx2).withSideEffect("m", xx3).mergeE(xx1).option(Merge.onCreate, __.select("c")).option(Merge.onMatch, __.select("m")) }, function({g, x [...]
 +    g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko1_in_vadas1X_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name", "marko").as("a").addV("person").property("name", "vadas").as("b") }, function({g, xx1, xx3, xx2}) { return g.withSideEffect("c", xx2).withSideEffect("m", xx3).mergeE(xx1).option(Merge.onCreate, __.select("c")).option(Merge.onMatch, __.select("m")) }, function({g, [...]
 +    g_mergeEXlabel_knows_out_marko_in_vadasX_aliased_direction: [function({g, xx1}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1}) { return g.mergeE(xx1) }, function({g, xx1}) { return g.V().has("person", "name", "marko").out("knows").has("person", "name", "vadas") }], 
 +    g_injectXlabel_knows_out_marko_in_vadas_label_self_out_vadas_in_vadasX: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1, xx2}) { return g.inject(xx1, xx2).mergeE() }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.E() }, function({g, xx1, xx2}) { return g.V().has("person", "name", "marko").out("knows").has("person", "name", "vadas") }, function({g, xx1, xx2}) { ret [...]
 +    g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_sideEffectXpropertiesXweightX_dropX_selectXmXX_exists: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name", "marko").as("a").addV("person").property("name", "vadas").as("b").addE("knows").property("weight", 1.0).from_("a").to("b") }, function({g, xx1, xx3, xx2}) { return g.withSideEffect("c", xx2).withSideEffect("m", xx3).mergeE [...]
 +    g_mergeE_with_outVinV_options_map: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.outV, xx2).option(Merge.inV, xx3) }, function({g, xx1, xx3, xx2}) { return g.V() }, function({g, xx1, xx3, xx2}) { return g.V().has("name", "marko").out("knows").has("name", "vadas") }], 
 +    g_mergeE_inline_with_outVinV_options_map: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1, xx2}) { return g.mergeE(new Map([[Direction.OUT, Merge.outV], [Direction.IN, Merge.inV], [T.label, "knows"]])).option(Merge.outV, xx1).option(Merge.inV, xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.V().has("name", "marko").out("knows").has("name", "vadas") }], 
 +    g_mergeE_with_outVinV_options_select: [function({g, xx1, vid2, vid1}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1, vid2, vid1}) { return g.V(vid1).as("x").V(vid2).as("y").mergeE(xx1).option(Merge.outV, __.select("x")).option(Merge.inV, __.select("y")) }, function({g, xx1, vid2, vid1}) { return g.V() }, function({g, xx1, vid2, vid1}) { return g.V().has("name", "marko").out("knows").has("name", "vadas") }], 
 +    g_mergeE_inline_with_outVinV_options_select: [function({g, vid2, vid1}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, vid2, vid1}) { return g.V(vid1).as("x").V(vid2).as("y").mergeE(new Map([[Direction.OUT, Merge.outV], [Direction.IN, Merge.inV], [T.label, "knows"]])).option(Merge.outV, __.select("x")).option(Merge.inV, __.select("y")) }, function({g, vid2, vid1}) { return g.V() }, function({g, vid2, vid1}) { return g.V() [...]
 +    g_mergeE_with_eid_specified_and_inheritance_1: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate, xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.E() }, function({g, xx1, xx2}) { return g.E("201") }, function({g, xx1, xx2}) { return g.V().has("name", "marko").out("knows").has("name", "vadas") }], 
 +    g_mergeE_with_eid_specified_and_inheritance_2: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate, xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.E() }, function({g, xx1, xx2}) { return g.E("201") }, function({g, xx1, xx2}) { return g.V().has("name", "marko").out("knows").has("name", "vadas") }], 
 +    g_mergeE_outV_override_prohibited: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate, xx2) }], 
 +    g_mergeE_inV_override_prohibited: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate, xx2) }], 
 +    g_mergeE_label_override_prohibited: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate, xx2) }], 
 +    g_mergeE_id_override_prohibited: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate, xx2) }], 
 +    g_mergeV_mergeE_combination_new_vertices: [function({g, xx1, xx3, xx2}) { return g.mergeV(xx1).as("outV").mergeV(xx2).as("inV").mergeE(xx3).option(Merge.outV, __.select("outV")).option(Merge.inV, __.select("inV")) }, function({g, xx1, xx3, xx2}) { return g.V() }, function({g, xx1, xx3, xx2}) { return g.E() }, function({g, xx1, xx3, xx2}) { return g.V().has("name", "marko").out("knows").has("name", "vadas") }], 
 +    g_mergeV_mergeE_combination_existing_vertices: [function({g, xx1, xx3, xx2}) { return g.addV("person").property("name", "marko").addV("person").property("name", "vadas") }, function({g, xx1, xx3, xx2}) { return g.mergeV(xx1).as("outV").mergeV(xx2).as("inV").mergeE(xx3).option(Merge.outV, __.select("outV")).option(Merge.inV, __.select("inV")) }, function({g, xx1, xx3, xx2}) { return g.V() }, function({g, xx1, xx3, xx2}) { return g.E() }, function({g, xx1, xx3, xx2}) { return g.V().ha [...]
 +    g_V_asXvX_mergeEXxx1X_optionXMerge_onMatch_xx2X_optionXMerge_outV_selectXvXX_optionXMerge_inV_selectXvXX: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1, xx2}) { return g.V().as("v").mergeE(xx1).option(Merge.onMatch, xx2).option(Merge.outV, __.select("v")).option(Merge.inV, __.select("v")) }], 
 +    g_V_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_sideEffectXpropertyXweight_0XX_constantXemptyXX: [function({g, xx1}) { return g.addV("person").property("name", "marko").as("a").addV("person").property("name", "vadas").as("b").addE("knows").property("weight", 1).from_("a").to("b") }, function({g, xx1}) { return g.V().mergeE(xx1).option(Merge.onMatch, __.sideEffect(__.property("weight", 0)).constant(new Map([]))) }, function({g, xx1}) { return g.V() }, function({g, xx1}) { r [...]
 +    g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_sideEffectXpropertyXweight_0XX_constantXemptyXX: [function({g, xx1}) { return g.addV("person").property("name", "marko").as("a").addV("person").property("name", "vadas").as("b").addE("knows").property("weight", 1).from_("a").to("b") }, function({g, xx1}) { return g.mergeE(xx1).option(Merge.onMatch, __.sideEffect(__.property("weight", 0)).constant(new Map([]))) }, function({g, xx1}) { return g.V() }, function({g, xx1}) { return  [...]
 +    g_injectXlist1_list2X_mergeEXlimitXlocal_1XX_optionXonCreate_rangeXlocal_1_2XX_optionXonMatch_tailXlocalXX_to_match: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29).as("marko").addV("person").property("name", "vadas").property("age", 27).as("vadas").addV("software").property("name", "lop").property("lang", "java").as("lop").addV("person").property("name", "josh").property("age", 32).as("josh").addV("software").property("name", "ripple [...]
 +    g_injectXlist1_list2X_mergeEXlimitXlocal_1XX_optionXonCreate_rangeXlocal_1_2XX_optionXonMatch_tailXlocalXX_to_create: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29).as("marko").addV("person").property("name", "vadas").property("age", 27).as("vadas").addV("software").property("name", "lop").property("lang", "java").as("lop").addV("person").property("name", "josh").property("age", 32).as("josh").addV("software").property("name", "rippl [...]
++    g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_weight_nullX_allowed: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").as("a").addV("person").property("name", "vadas").as("b").addE("knows").from_("a").to("b").property("weight", 1.0) }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onMatch, xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.E().hasLabel("knows") }, function({g, xx1, xx2}) { return g.E [...]
++    g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_weight_nullX: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").as("a").addV("person").property("name", "vadas").as("b").addE("knows").from_("a").to("b").property("weight", 1.0) }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onMatch, xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.E().hasLabel("knows") }, function({g, xx1, xx2}) { return g.E().hasLa [...]
 +    g_mergeVXemptyX_optionXonMatch_nullX: [function({g}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g}) { return g.mergeV(new Map([])).option(Merge.onMatch, null) }, function({g}) { return g.V().has("person", "name", "marko").has("age", 29) }], 
 +    g_V_mergeVXemptyX_optionXonMatch_nullX: [function({g}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g}) { return g.V().mergeV(new Map([])).option(Merge.onMatch, null) }, function({g}) { return g.V().has("person", "name", "marko").has("age", 29) }], 
 +    g_mergeVXnullX_optionXonCreate_label_null_name_markoX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1}) { return g.mergeV(xx1) }], 
 +    g_V_mergeVXnullX_optionXonCreate_label_null_name_markoX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1}) { return g.V().mergeV(xx1) }], 
 +    g_mergeVXlabel_person_name_stephenX_optionXonCreate_nullX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1}) { return g.mergeV(xx1).option(Merge.onCreate, null) }, function({g, xx1}) { return g.V() }, function({g, xx1}) { return g.V().has("person", "name", "marko") }, function({g, xx1}) { return g.V().has("person", "name", "stephen") }], 
 +    g_V_mergeVXlabel_person_name_stephenX_optionXonCreate_nullX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1}) { return g.V().mergeV(xx1).option(Merge.onCreate, null) }, function({g, xx1}) { return g.V() }, function({g, xx1}) { return g.V().has("person", "name", "marko") }, function({g, xx1}) { return g.V().has("person", "name", "stephen") }], 
 +    g_mergeVXnullX_optionXonCreate_emptyX: [function({g}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g}) { return g.mergeV(null).option(Merge.onCreate, new Map([])) }, function({g}) { return g.V() }], 
 +    g_V_mergeVXnullX_optionXonCreate_emptyX: [function({g}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g}) { return g.V().mergeV(null).option(Merge.onCreate, new Map([])) }, function({g}) { return g.V() }], 
      g_mergeVXemptyX_no_existing: [function({g}) { return g.mergeV(new Map([])) }, function({g}) { return g.V() }], 
      g_injectX0X_mergeVXemptyX_no_existing: [function({g}) { return g.inject(0).mergeV(new Map([])) }, function({g}) { return g.V() }], 
 -    g_mergeVXemptyX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.mergeV(new Map([])) }, function({g}) { return g.V().has("person","name","marko").has("age",29) }], 
 -    g_V_mergeVXemptyX_two_exist: [function({g}) { return g.addV("person").property("name","marko").property("age",29).addV("person").property("name","vadas").property("age",27) }, function({g}) { return g.V().mergeV(new Map([])) }, function({g}) { return g.V() }, function({g}) { return g.V().has("person","name","marko").has("age",29) }, function({g}) { return g.V().has("person","name","vadas").has("age",27) }], 
 -    g_mergeVXnullX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.mergeV(null) }, function({g}) { return g.V() }], 
 -    g_V_mergeVXnullX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.V().mergeV(null) }, function({g}) { return g.V() }], 
 -    g_mergeVXlabel_person_name_stephenX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.mergeV(xx1) }, function({g, xx1}) { return g.V().has("person","name","stephen") }], 
 -    g_mergeVXlabel_person_name_markoX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.mergeV(xx1) }, function({g, xx1}) { return g.V().has("person","name","marko") }], 
 -    g_mergeVXlabel_person_name_stephenX_optionXonCreate_label_person_name_stephen_age_19X_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate,xx2) }, function({g, xx1, xx2}) { return g.V().has("person","name","stephen").has("age",19) }], 
 -    g_mergeVXlabel_person_name_markoX_optionXonMatch_age_19X_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onMatch,xx2) }, function({g, xx1, xx2}) { return g.V().has("person","name","marko").has("age",19) }], 
 -    g_withSideEffectXc_label_person_name_stephenX_withSideEffectXm_label_person_name_stephen_age_19X_mergeVXselectXcXX_optionXonCreate_selectXmXX_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.withSideEffect("c",xx1).withSideEffect("m",xx2).mergeV(__.select("c")).option(Merge.onCreate,__.select("m")) }, function({g, xx1, xx2}) { return g.V().has("person","name","stephen").has("age",19) }], 
 -    g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_mergeVXselectXcXX_optionXonMatch_selectXmXX_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.withSideEffect("c",xx1).withSideEffect("m",xx2).mergeV(__.select("c")).option(Merge.onMatch,__.select("m")) }, function({g, xx1, xx2}) { return g.V().has("person","name","marko").has("age",19) }], 
 -    g_mergeVXlabel_person_name_markoX_propertyXname_vadas_acl_publicX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.mergeV(xx1).property("name","vadas","acl","public") }, function({g, xx1}) { return g.V().properties("name").hasValue("vadas").has("acl","public") }], 
 -    g_injectX0X_mergeVXlabel_person_name_stephenX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.inject(0).mergeV(xx1) }, function({g, xx1}) { return g.V().has("person","name","stephen") }], 
 -    g_injectX0X_mergeVXlabel_person_name_markoX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.inject(0).mergeV(xx1) }, function({g, xx1}) { return g.V().has("person","name","marko") }], 
 -    g_injectX0X_mergeVXlabel_person_name_stephenX_optionXonCreate_label_person_name_stephen_age_19X_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.inject(0).mergeV(xx1).option(Merge.onCreate,xx2) }, function({g, xx1, xx2}) { return g.V().has("person","name","stephen").has("age",19) }], 
 -    g_injectX0X_mergeVXlabel_person_name_markoX_optionXonMatch_age_19X_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.inject(0).mergeV(xx1).option(Merge.onMatch,xx2) }, function({g, xx1, xx2}) { return g.V().has("person","name","marko").has("age",19) }], 
 -    g_withSideEffectXc_label_person_name_stephenX_withSideEffectXm_label_person_name_stephen_age_19X_injectX0X_mergeVXselectXcXX_optionXonCreate_selectXmXX_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.withSideEffect("c",xx1).withSideEffect("m",xx2).inject(0).mergeV(__.select("c")).option(Merge.onCreate,__.select("m")) }, function({g, xx1, xx2}) { return g.V().has("person","name","stephen").ha [...]
 -    g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_injectX0X_mergeVXselectXcXX_optionXonMatch_selectXmXX_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.withSideEffect("c",xx1).withSideEffect("m",xx2).inject(0).mergeV(__.select("c")).option(Merge.onMatch,__.select("m")) }, function({g, xx1, xx2}) { return g.V().has("person","name","marko").has("age",19) }], 
 -    g_injectX0X_mergeVXlabel_person_name_markoX_propertyXname_vadas_acl_publicX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.inject(0).mergeV(xx1).property("name","vadas","acl","public") }, function({g, xx1}) { return g.V().properties("name").hasValue("vadas").has("acl","public") }], 
 -    g_injectXlabel_person_name_marko_label_person_name_stephenX_mergeVXidentityX: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.inject(xx1,xx2).mergeV(__.identity()) }, function({g, xx1, xx2}) { return g.V().has("person","name","stephen") }, function({g, xx1, xx2}) { return g.V().has("person","name","marko") }, function({g, xx1, xx2}) { return g.V() }], 
 -    g_injectXlabel_person_name_marko_label_person_name_stephenX_mergeV: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.inject(xx1,xx2).mergeV() }, function({g, xx1, xx2}) { return g.V().has("person","name","stephen") }, function({g, xx1, xx2}) { return g.V().has("person","name","marko") }, function({g, xx1, xx2}) { return g.V() }], 
 -    g_mergeVXlabel_person_name_stephenX_propertyXlist_name_steveX: [function({g, xx1}) { return g.addV("person").property(Cardinality.list,"name","stephen") }, function({g, xx1}) { return g.mergeV(xx1).property(Cardinality.list,"name","steve") }, function({g, xx1}) { return g.V() }, function({g, xx1}) { return g.V().properties("name").hasValue("steve") }, function({g, xx1}) { return g.V().properties("name").hasValue("stephen") }, function({g, xx1}) { return g.V().properties("name") }], 
 -    g_mergeXlabel_person_name_vadasX_optionXonMatch_age_35X: [function({g, xx1, xx2}) { return g.addV("person").property("name","vadas").property("age",29).addV("person").property("name","vadas").property("age",27) }, function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onMatch,xx2) }, function({g, xx1, xx2}) { return g.V().has("age",35) }, function({g, xx1, xx2}) { return g.V() }], 
 -    g_V_mapXmergeXlabel_person_name_joshXX: [function({g, xx1}) { return g.addV("person").property("name","vadas").property("age",29).addV("person").property("name","stephen").property("age",27) }, function({g, xx1}) { return g.V().map(__.mergeV(xx1)) }, function({g, xx1}) { return g.V().has("person","name","josh") }, function({g, xx1}) { return g.V() }], 
 -    g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_mergeVXselectXcXX_optionXonMatch_sideEffectXpropertiesXageX_dropX_selectXmXX_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32) }, function({g, xx1, xx2}) { return g.withSideEffect("c",xx1).withSideEffect("m",xx2).mergeV(__.select("c")).option(Merge.onMatch,__.sideEffect(__.pr [...]
 -    g_withSideEffectXm_age_19X_V_hasXperson_name_markoX_mergeVXselectXcXX_optionXonMatch_sideEffectXpropertiesXageX_dropX_selectXmXX_option: [function({g, xx1}) { return g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32) }, function({g, xx1}) { return g.withSideEffect("m",xx1).V().has("person","name","marko").mergeV(new Map([])).option(Merge.onMatch,__.sideEffect(__.properties("age").drop( [...]
 -    g_mergeV_onCreate_inheritance_existing: [function({g, xx1, xx2}) { return g.addV("person").property("name","mike").property(T.id,"1") }, function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate,xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.V("1").has("person","name","mike") }], 
 -    g_mergeV_onCreate_inheritance_new_1: [function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate,xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.V("1").has("person","name","mike") }], 
 -    g_mergeV_onCreate_inheritance_new_2: [function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate,xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.V("1").has("person","name","mike") }], 
 -    g_mergeV_label_override_prohibited: [function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate,xx2) }], 
 -    g_mergeV_id_override_prohibited: [function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate,xx2) }], 
 +    g_mergeVXemptyX: [function({g}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g}) { return g.mergeV(new Map([])) }, function({g}) { return g.V().has("person", "name", "marko").has("age", 29) }], 
 +    g_V_mergeVXemptyX_two_exist: [function({g}) { return g.addV("person").property("name", "marko").property("age", 29).addV("person").property("name", "vadas").property("age", 27) }, function({g}) { return g.V().mergeV(new Map([])) }, function({g}) { return g.V() }, function({g}) { return g.V().has("person", "name", "marko").has("age", 29) }, function({g}) { return g.V().has("person", "name", "vadas").has("age", 27) }], 
 +    g_mergeVXnullX: [function({g}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g}) { return g.mergeV(null) }, function({g}) { return g.V() }], 
 +    g_mergeVXnullvarX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1}) { return g.mergeV(xx1) }, function({g, xx1}) { return g.V() }], 
 +    g_V_mergeVXnullX: [function({g}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g}) { return g.V().mergeV(null) }, function({g}) { return g.V() }], 
 +    g_mergeVXlabel_person_name_stephenX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1}) { return g.mergeV(xx1) }, function({g, xx1}) { return g.V().has("person", "name", "stephen") }], 
 +    g_mergeVXlabel_person_name_markoX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1}) { return g.mergeV(xx1) }, function({g, xx1}) { return g.V().has("person", "name", "marko") }], 
 +    g_mergeVXlabel_person_name_stephenX_optionXonCreate_label_person_name_stephen_age_19X_option: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate, xx2) }, function({g, xx1, xx2}) { return g.V().has("person", "name", "stephen").has("age", 19) }], 
 +    g_mergeVXlabel_person_name_markoX_optionXonMatch_age_19X_option: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onMatch, xx2) }, function({g, xx1, xx2}) { return g.V().has("person", "name", "marko").has("age", 19) }], 
 +    g_withSideEffectXc_label_person_name_stephenX_withSideEffectXm_label_person_name_stephen_age_19X_mergeVXselectXcXX_optionXonCreate_selectXmXX_option: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1, xx2}) { return g.withSideEffect("c", xx1).withSideEffect("m", xx2).mergeV(__.select("c")).option(Merge.onCreate, __.select("m")) }, function({g, xx1, xx2}) { return g.V().has("person", "name", "stephen").has("age", 19) }], 
 +    g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_mergeVXselectXcXX_optionXonMatch_selectXmXX_option: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1, xx2}) { return g.withSideEffect("c", xx1).withSideEffect("m", xx2).mergeV(__.select("c")).option(Merge.onMatch, __.select("m")) }, function({g, xx1, xx2}) { return g.V().has("person", "name", "marko").has("age", 19) }], 
 +    g_mergeVXlabel_person_name_markoX_propertyXname_vadas_acl_publicX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1}) { return g.mergeV(xx1).property("name", "vadas", "acl", "public") }, function({g, xx1}) { return g.V().properties("name").hasValue("vadas").has("acl", "public") }], 
 +    g_injectX0X_mergeVXlabel_person_name_stephenX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1}) { return g.inject(0).mergeV(xx1) }, function({g, xx1}) { return g.V().has("person", "name", "stephen") }], 
 +    g_injectX0X_mergeVXlabel_person_name_markoX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1}) { return g.inject(0).mergeV(xx1) }, function({g, xx1}) { return g.V().has("person", "name", "marko") }], 
 +    g_injectX0X_mergeVXlabel_person_name_stephenX_optionXonCreate_label_person_name_stephen_age_19X_option: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1, xx2}) { return g.inject(0).mergeV(xx1).option(Merge.onCreate, xx2) }, function({g, xx1, xx2}) { return g.V().has("person", "name", "stephen").has("age", 19) }], 
 +    g_injectX0X_mergeVXlabel_person_name_markoX_optionXonMatch_age_19X_option: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1, xx2}) { return g.inject(0).mergeV(xx1).option(Merge.onMatch, xx2) }, function({g, xx1, xx2}) { return g.V().has("person", "name", "marko").has("age", 19) }], 
 +    g_withSideEffectXc_label_person_name_stephenX_withSideEffectXm_label_person_name_stephen_age_19X_injectX0X_mergeVXselectXcXX_optionXonCreate_selectXmXX_option: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1, xx2}) { return g.withSideEffect("c", xx1).withSideEffect("m", xx2).inject(0).mergeV(__.select("c")).option(Merge.onCreate, __.select("m")) }, function({g, xx1, xx2}) { return g.V().has("person", "name", "steph [...]
 +    g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_injectX0X_mergeVXselectXcXX_optionXonMatch_selectXmXX_option: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1, xx2}) { return g.withSideEffect("c", xx1).withSideEffect("m", xx2).inject(0).mergeV(__.select("c")).option(Merge.onMatch, __.select("m")) }, function({g, xx1, xx2}) { return g.V().has("person", "name", "marko").has("age", 19) }], 
 +    g_injectX0X_mergeVXlabel_person_name_markoX_propertyXname_vadas_acl_publicX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1}) { return g.inject(0).mergeV(xx1).property("name", "vadas", "acl", "public") }, function({g, xx1}) { return g.V().properties("name").hasValue("vadas").has("acl", "public") }], 
 +    g_injectXlabel_person_name_marko_label_person_name_stephenX_mergeVXidentityX: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1, xx2}) { return g.inject(xx1, xx2).mergeV(__.identity()) }, function({g, xx1, xx2}) { return g.V().has("person", "name", "stephen") }, function({g, xx1, xx2}) { return g.V().has("person", "name", "marko") }, function({g, xx1, xx2}) { return g.V() }], 
 +    g_injectXlabel_person_name_marko_label_person_name_stephenX_mergeV: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1, xx2}) { return g.inject(xx1, xx2).mergeV() }, function({g, xx1, xx2}) { return g.V().has("person", "name", "stephen") }, function({g, xx1, xx2}) { return g.V().has("person", "name", "marko") }, function({g, xx1, xx2}) { return g.V() }], 
 +    g_mergeVXlabel_person_name_stephenX_propertyXlist_name_steveX: [function({g, xx1}) { return g.addV("person").property(Cardinality.list, "name", "stephen") }, function({g, xx1}) { return g.mergeV(xx1).property(Cardinality.list, "name", "steve") }, function({g, xx1}) { return g.V() }, function({g, xx1}) { return g.V().properties("name").hasValue("steve") }, function({g, xx1}) { return g.V().properties("name").hasValue("stephen") }, function({g, xx1}) { return g.V().properties("name") }], 
 +    g_mergeXlabel_person_name_vadasX_optionXonMatch_age_35X: [function({g, xx1, xx2}) { return g.addV("person").property("name", "vadas").property("age", 29).addV("person").property("name", "vadas").property("age", 27) }, function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onMatch, xx2) }, function({g, xx1, xx2}) { return g.V().has("age", 35) }, function({g, xx1, xx2}) { return g.V() }], 
 +    g_V_mapXmergeXlabel_person_name_joshXX: [function({g, xx1}) { return g.addV("person").property("name", "vadas").property("age", 29).addV("person").property("name", "stephen").property("age", 27) }, function({g, xx1}) { return g.V().map(__.mergeV(xx1)) }, function({g, xx1}) { return g.V().has("person", "name", "josh") }, function({g, xx1}) { return g.V() }], 
 +    g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_mergeVXselectXcXX_optionXonMatch_sideEffectXpropertiesXageX_dropX_selectXmXX_option: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property(Cardinality.list, "age", 29).property(Cardinality.list, "age", 31).property(Cardinality.list, "age", 32) }, function({g, xx1, xx2}) { return g.withSideEffect("c", xx1).withSideEffect("m", xx2).mergeV(__.select("c")).option(Merge.onMatch, __.sideEf [...]
 +    g_withSideEffectXm_age_19X_V_hasXperson_name_markoX_mergeVXselectXcXX_optionXonMatch_sideEffectXpropertiesXageX_dropX_selectXmXX_option: [function({g, xx1}) { return g.addV("person").property("name", "marko").property(Cardinality.list, "age", 29).property(Cardinality.list, "age", 31).property(Cardinality.list, "age", 32) }, function({g, xx1}) { return g.withSideEffect("m", xx1).V().has("person", "name", "marko").mergeV(new Map([])).option(Merge.onMatch, __.sideEffect(__.properties(" [...]
 +    g_mergeV_onCreate_inheritance_existing: [function({g, xx1, xx2}) { return g.addV("person").property("name", "mike").property(T.id, "1") }, function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate, xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.V("1").has("person", "name", "mike") }], 
 +    g_mergeV_onCreate_inheritance_new_1: [function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate, xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.V("1").has("person", "name", "mike") }], 
 +    g_mergeV_onCreate_inheritance_new_2: [function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate, xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.V("1").has("person", "name", "mike") }], 
 +    g_mergeV_label_override_prohibited: [function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate, xx2) }], 
 +    g_mergeV_id_override_prohibited: [function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate, xx2) }], 
      g_mergeV_hidden_id_key_prohibited: [function({g, xx1}) { return g.mergeV(xx1) }], 
      g_mergeV_hidden_label_key_prohibited: [function({g, xx1}) { return g.mergeV(xx1) }], 
      g_mergeV_hidden_label_value_prohibited: [function({g, xx1}) { return g.mergeV(xx1) }], 
 -    g_mergeV_hidden_id_key_onCreate_prohibited: [function({g, xx1}) { return g.mergeV(new Map([])).option(Merge.onCreate,xx1) }], 
 -    g_mergeV_hidden_label_key_onCreate_prohibited: [function({g, xx1}) { return g.mergeV(new Map([])).option(Merge.onCreate,xx1) }], 
 -    g_mergeV_hidden_label_value_onCreate_prohibited: [function({g, xx1}) { return g.mergeV(new Map([])).option(Merge.onCreate,xx1) }], 
 -    g_mergeV_hidden_id_key_onMatch_matched_prohibited: [function({g, xx1}) { return g.addV("vertex") }, function({g, xx1}) { return g.mergeV(new Map([])).option(Merge.onMatch,xx1) }], 
 -    g_mergeV_hidden_label_key_matched_onMatch_matched_prohibited: [function({g, xx1}) { return g.addV("vertex") }, function({g, xx1}) { return g.mergeV(new Map([])).option(Merge.onMatch,xx1) }], 
 -    g_mergeVXname_markoX_optionXonMatch_age_listX33XX: [function({g}) { return g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32) }, function({g}) { return g.mergeV(new Map([["name","marko"]])).option(Merge.onMatch,new Map([["age",CardinalityValue.list(33)]])) }, function({g}) { return g.V().has("person","name","marko").has("age",33) }, function({g}) { return g.V().has("person","name","mar [...]
 -    g_mergeVXname_markoX_optionXonMatch_age_setX33XX: [function({g}) { return g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32) }, function({g}) { return g.mergeV(new Map([["name","marko"]])).option(Merge.onMatch,new Map([["age",CardinalityValue.set(33)]])) }, function({g}) { return g.V().has("person","name","marko").has("age",33) }, function({g}) { return g.V().has("person","name","marko [...]
 -    g_mergeVXname_markoX_optionXonMatch_age_setX31XX: [function({g}) { return g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32) }, function({g}) { return g.mergeV(new Map([["name","marko"]])).option(Merge.onMatch,new Map([["age",CardinalityValue.set(31)]])) }, function({g}) { return g.V().has("person","name","marko").has("age",31) }, function({g}) { return g.V().has("person","name","marko [...]
 -    g_mergeVXname_markoX_optionXonMatch_age_singleX33XX: [function({g}) { return g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32) }, function({g}) { return g.mergeV(new Map([["name","marko"]])).option(Merge.onMatch,new Map([["age",CardinalityValue.single(33)]])) }, function({g}) { return g.V().has("person","name","marko").has("age",33) }, function({g}) { return g.V().has("person","name", [...]
 -    g_mergeVXname_markoX_optionXonMatch_age_33_singleX: [function({g}) { return g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32) }, function({g}) { return g.mergeV(new Map([["name","marko"]])).option(Merge.onMatch,new Map([["age",33]]),Cardinality.single) }, function({g}) { return g.V().has("person","name","marko").has("age",33) }, function({g}) { return g.V().has("person","name","marko" [...]
 -    g_mergeVXname_markoX_optionXonMatch_name_allen_age_setX31X_singleX: [function({g}) { return g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32) }, function({g}) { return g.mergeV(new Map([["name","marko"]])).option(Merge.onMatch,new Map([["name","allen"],["age",CardinalityValue.set(31)]]),Cardinality.single) }, function({g}) { return g.V().has("person","name","marko") }, function({g}) { [...]
 -    g_mergeVXname_markoX_optionXonMatch_name_allen_age_singleX31X_singleX: [function({g}) { return g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32) }, function({g}) { return g.mergeV(new Map([["name","marko"]])).option(Merge.onMatch,new Map([["name","allen"],["age",CardinalityValue.single(31)]]),Cardinality.single) }, function({g}) { return g.V().has("person","name","marko") }, function( [...]
 -    g_mergeVXname_aliceX_optionXonCreate_age_singleX81XX: [function({g}) { return g.mergeV(new Map([["name","alice"],[T.label,"person"]])).option(Merge.onCreate,new Map([["age",CardinalityValue.single(81)]])) }, function({g}) { return g.V().has("person","name","alice").has("age",81) }, function({g}) { return g.V().has("person","name","alice").has("age") }, function({g}) { return g.V().has("person","name","alice").properties("age") }], 
 -    g_mergeVXname_aliceX_optionXonCreate_age_setX81XX: [function({g}) { return g.mergeV(new Map([["name","alice"],[T.label,"person"]])).option(Merge.onCreate,new Map([["age",CardinalityValue.set(81)]])) }, function({g}) { return g.V().has("person","name","alice").has("age",81) }, function({g}) { return g.V().has("person","name","alice").has("age") }, function({g}) { return g.V().has("person","name","alice").properties("age") }], 
 -    g_mergeVXname_aliceX_optionXonCreate_age_singleX81X_age_81_setX: [function({g}) { return g.mergeV(new Map([["name","alice"],[T.label,"person"]])).option(Merge.onCreate,new Map([["age",81]]),Cardinality.set) }, function({g}) { return g.V().has("person","name","alice").has("age",81) }, function({g}) { return g.V().has("person","name","alice").has("age") }, function({g}) { return g.V().has("person","name","alice").properties("age") }], 
 -    g_mergeV_hidden_label_key_onMatch_matched_prohibited: [function({g, xx1}) { return g.mergeV(new Map([])).option(Merge.onMatch,xx1) }], 
 -    g_injectXlist1_list2X_mergeVXlimitXlocal_1XX_optionXonCreate_rangeXlocal_1_2X_optionXonMatch_tailXlocalXX_to_match: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.inject(xx1,xx1,xx2).fold().mergeV(__.limit(Scope.local,1)).option(Merge.onCreate,__.range(Scope.local,1,2)).option(Merge.onMatch,__.tail(Scope.local)) }, function({g, xx1, xx2}) { return g.V().has("person","name","marko").has("created","N [...]
 -    g_injectXlist1_list2X_mergeVXlimitXlocal_1XX_optionXonCreate_rangeXlocal_1_2X_optionXonMatch_tailXlocalXX_to_create: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.inject(xx1,xx1,xx2).fold().mergeV(__.limit(Scope.local,1)).option(Merge.onCreate,__.range(Scope.local,1,2)).option(Merge.onMatch,__.tail(Scope.local)) }, function({g, xx1, xx2}) { return g.V().has("person","name","stephen").hasNot("creat [...]
 -    g_mergeVXlabel_person_name_marko_age_29X_optionXonMatch_age_nullX_allowed: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onMatch,xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.V().has("person","name","marko").has("age",null) }], 
 -    g_mergeVXlabel_person_name_marko_age_29X_optionXonMatch_age_nullX: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onMatch,xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.V().has("person","name","marko").has("age") }], 
 +    g_mergeV_hidden_id_key_onCreate_prohibited: [function({g, xx1}) { return g.mergeV(new Map([])).option(Merge.onCreate, xx1) }], 
 +    g_mergeV_hidden_label_key_onCreate_prohibited: [function({g, xx1}) { return g.mergeV(new Map([])).option(Merge.onCreate, xx1) }], 
 +    g_mergeV_hidden_label_value_onCreate_prohibited: [function({g, xx1}) { return g.mergeV(new Map([])).option(Merge.onCreate, xx1) }], 
 +    g_mergeV_hidden_id_key_onMatch_matched_prohibited: [function({g, xx1}) { return g.addV("vertex") }, function({g, xx1}) { return g.mergeV(new Map([])).option(Merge.onMatch, xx1) }], 
 +    g_mergeV_hidden_label_key_matched_onMatch_matched_prohibited: [function({g, xx1}) { return g.addV("vertex") }, function({g, xx1}) { return g.mergeV(new Map([])).option(Merge.onMatch, xx1) }], 
 +    g_mergeVXname_markoX_optionXonMatch_age_listX33XX: [function({g}) { return g.addV("person").property("name", "marko").property(Cardinality.list, "age", 29).property(Cardinality.list, "age", 31).property(Cardinality.list, "age", 32) }, function({g}) { return g.mergeV(new Map([["name", "marko"]])).option(Merge.onMatch, new Map([["age", CardinalityValue.list(33)]])) }, function({g}) { return g.V().has("person", "name", "marko").has("age", 33) }, function({g}) { return g.V().has("person [...]
 +    g_mergeVXname_markoX_optionXonMatch_age_setX33XX: [function({g}) { return g.addV("person").property("name", "marko").property(Cardinality.list, "age", 29).property(Cardinality.list, "age", 31).property(Cardinality.list, "age", 32) }, function({g}) { return g.mergeV(new Map([["name", "marko"]])).option(Merge.onMatch, new Map([["age", CardinalityValue.set(33)]])) }, function({g}) { return g.V().has("person", "name", "marko").has("age", 33) }, function({g}) { return g.V().has("person", [...]
 +    g_mergeVXname_markoX_optionXonMatch_age_setX31XX: [function({g}) { return g.addV("person").property("name", "marko").property(Cardinality.list, "age", 29).property(Cardinality.list, "age", 31).property(Cardinality.list, "age", 32) }, function({g}) { return g.mergeV(new Map([["name", "marko"]])).option(Merge.onMatch, new Map([["age", CardinalityValue.set(31)]])) }, function({g}) { return g.V().has("person", "name", "marko").has("age", 31) }, function({g}) { return g.V().has("person", [...]
 +    g_mergeVXname_markoX_optionXonMatch_age_singleX33XX: [function({g}) { return g.addV("person").property("name", "marko").property(Cardinality.list, "age", 29).property(Cardinality.list, "age", 31).property(Cardinality.list, "age", 32) }, function({g}) { return g.mergeV(new Map([["name", "marko"]])).option(Merge.onMatch, new Map([["age", CardinalityValue.single(33)]])) }, function({g}) { return g.V().has("person", "name", "marko").has("age", 33) }, function({g}) { return g.V().has("pe [...]
 +    g_mergeVXname_markoX_optionXonMatch_age_33_singleX: [function({g}) { return g.addV("person").property("name", "marko").property(Cardinality.list, "age", 29).property(Cardinality.list, "age", 31).property(Cardinality.list, "age", 32) }, function({g}) { return g.mergeV(new Map([["name", "marko"]])).option(Merge.onMatch, new Map([["age", 33]]), Cardinality.single) }, function({g}) { return g.V().has("person", "name", "marko").has("age", 33) }, function({g}) { return g.V().has("person", [...]
 +    g_mergeVXname_markoX_optionXonMatch_name_allen_age_setX31X_singleX: [function({g}) { return g.addV("person").property("name", "marko").property(Cardinality.list, "age", 29).property(Cardinality.list, "age", 31).property(Cardinality.list, "age", 32) }, function({g}) { return g.mergeV(new Map([["name", "marko"]])).option(Merge.onMatch, new Map([["name", "allen"], ["age", CardinalityValue.set(31)]]), Cardinality.single) }, function({g}) { return g.V().has("person", "name", "marko") },  [...]
 +    g_mergeVXname_markoX_optionXonMatch_name_allen_age_singleX31X_singleX: [function({g}) { return g.addV("person").property("name", "marko").property(Cardinality.list, "age", 29).property(Cardinality.list, "age", 31).property(Cardinality.list, "age", 32) }, function({g}) { return g.mergeV(new Map([["name", "marko"]])).option(Merge.onMatch, new Map([["name", "allen"], ["age", CardinalityValue.single(31)]]), Cardinality.single) }, function({g}) { return g.V().has("person", "name", "marko [...]
 +    g_mergeVXname_aliceX_optionXonCreate_age_singleX81XX: [function({g}) { return g.mergeV(new Map([["name", "alice"], [T.label, "person"]])).option(Merge.onCreate, new Map([["age", CardinalityValue.single(81)]])) }, function({g}) { return g.V().has("person", "name", "alice").has("age", 81) }, function({g}) { return g.V().has("person", "name", "alice").has("age") }, function({g}) { return g.V().has("person", "name", "alice").properties("age") }], 
 +    g_mergeVXname_aliceX_optionXonCreate_age_setX81XX: [function({g}) { return g.mergeV(new Map([["name", "alice"], [T.label, "person"]])).option(Merge.onCreate, new Map([["age", CardinalityValue.set(81)]])) }, function({g}) { return g.V().has("person", "name", "alice").has("age", 81) }, function({g}) { return g.V().has("person", "name", "alice").has("age") }, function({g}) { return g.V().has("person", "name", "alice").properties("age") }], 
 +    g_mergeVXname_aliceX_optionXonCreate_age_singleX81X_age_81_setX: [function({g}) { return g.mergeV(new Map([["name", "alice"], [T.label, "person"]])).option(Merge.onCreate, new Map([["age", 81]]), Cardinality.set) }, function({g}) { return g.V().has("person", "name", "alice").has("age", 81) }, function({g}) { return g.V().has("person", "name", "alice").has("age") }, function({g}) { return g.V().has("person", "name", "alice").properties("age") }], 
 +    g_mergeV_hidden_label_key_onMatch_matched_prohibited: [function({g, xx1}) { return g.mergeV(new Map([])).option(Merge.onMatch, xx1) }], 
 +    g_injectXlist1_list2X_mergeVXlimitXlocal_1XX_optionXonCreate_rangeXlocal_1_2X_optionXonMatch_tailXlocalXX_to_match: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1, xx2}) { return g.inject(xx1, xx1, xx2).fold().as("m").mergeV(__.select("m").limit(Scope.local, 1)).option(Merge.onCreate, __.select("m").range(Scope.local, 1, 2)).option(Merge.onMatch, __.select("m").tail(Scope.local)) }, function({g, xx1, xx2}) { retur [...]
 +    g_injectXlist1_list2X_mergeVXlimitXlocal_1XX_optionXonCreate_rangeXlocal_1_2X_optionXonMatch_tailXlocalXX_to_create: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1, xx2}) { return g.inject(xx1, xx1, xx2).fold().as("m").mergeV(__.select("m").limit(Scope.local, 1)).option(Merge.onCreate, __.select("m").range(Scope.local, 1, 2)).option(Merge.onMatch, __.select("m").tail(Scope.local)) }, function({g, xx1, xx2}) { retu [...]
++    g_mergeVXlabel_person_name_marko_age_29X_optionXonMatch_age_nullX_allowed: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onMatch, xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.V().has("person", "name", "marko").has("age", null) }], 
++    g_mergeVXlabel_person_name_marko_age_29X_optionXonMatch_age_nullX: [function({g, xx1, xx2}) { return g.addV("person").property("name", "marko").property("age", 29) }, function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onMatch, xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.V().has("person", "name", "marko").has("age") }], 
      g_V_age_min: [function({g}) { return g.V().values("age").min() }], 
      g_V_foo_min: [function({g}) { return g.V().values("foo").min() }], 
      g_V_name_min: [function({g}) { return g.V().values("name").min() }], 
diff --cc gremlin-python/src/main/python/radish/gremlin.py
index e2978beeff,c01921d018..1ae7a3725f
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@@ -997,176 -850,174 +997,180 @@@ world.gremlins = 
      'g_injectXa_null_bX_mergeXa_null_cX': [(lambda g, xx1=None,xx2=None:g.inject(xx1).merge(xx2))], 
      'g_injectX3_threeX_mergeXfive_three_7X': [(lambda g, xx1=None,xx2=None:g.inject(xx1).merge(xx2))], 
      'g_V_asXnameX_projectXnameX_byXnameX_mergeXother_blueprintX': [(lambda g, xx1=None:g.V().as_('name').project('name').by('name').merge(xx1))], 
 -    'g_V_hasXname_markoX_elementMap_mergeXV_hasXname_lopX_elementMapX': [(lambda g:g.V().has('name','marko').elementMap().merge(__.V().has('name','lop').elementMap()))], 
 -    'g_V_mergeEXlabel_selfX_optionXonMatch_emptyX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29).addE('self')), (lambda g, xx1=None:g.V().merge_e(xx1).option(Merge.on_match,{})), (lambda g, xx1=None:g.E()), (lambda g, xx1=None:g.E().properties()), (lambda g, xx1=None:g.V())], 
 -    'g_V_mergeEXlabel_selfX_optionXonMatch_nullX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29).addE('self')), (lambda g, xx1=None:g.V().merge_e(xx1).option(Merge.on_match,None)), (lambda g, xx1=None:g.E()), (lambda g, xx1=None:g.E().properties()), (lambda g, xx1=None:g.V())], 
 -    'g_V_mergeEXemptyX_optionXonCreate_nullX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.V().as_('v').merge_e(xx1).option(Merge.on_create,None).option(Merge.out_v,__.select('v')).option(Merge.in_v,__.select('v'))), (lambda g, xx1=None:g.E()), (lambda g, xx1=None:g.V())], 
 -    'g_mergeEXemptyX_exists': [(lambda g:g.addV('person').property('name','marko').property('age',29).addE('self')), (lambda g:g.merge_e({})), (lambda g:g.E()), (lambda g:g.V())], 
 -    'g_mergeEXemptyX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.merge_e({}))], 
 -    'g_V_mergeEXemptyX_two_exist': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29).addV('person').property('name','vadas').property('age',27)), (lambda g, xx1=None:g.V().as_('v').merge_e(xx1).option(Merge.out_v,__.select('v')).option(Merge.in_v,__.select('v'))), (lambda g, xx1=None:g.E()), (lambda g, xx1=None:g.V())], 
 -    'g_mergeEXnullX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.merge_e(None))], 
 -    'g_V_mergeEXnullX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.V().merge_e(None))], 
 -    'g_mergeEXlabel_knows_out_marko_in_vadasX': [(lambda g, xx1=None:g.addV('person').property('name','marko').addV('person').property('name','vadas')), (lambda g, xx1=None:g.merge_e(xx1)), (lambda g, xx1=None:g.V().has('person','name','marko').out('knows').has('person','name','vadas'))], 
 -    'g_withSideEffectXa_label_knows_out_marko_in_vadasX_mergeEXselectXaXX': [(lambda g, xx1=None:g.addV('person').property('name','marko').addV('person').property('name','vadas')), (lambda g, xx1=None:g.withSideEffect('a',xx1).merge_e(__.select('a'))), (lambda g, xx1=None:g.V().has('person','name','marko').out('knows').has('person','name','vadas'))], 
 -    'g_mergeEXlabel_knows_out_marko1_in_vadas1X': [(lambda g, xx1=None:g.addV('person').property('name','marko').addV('person').property('name','vadas')), (lambda g, xx1=None:g.merge_e(xx1)), (lambda g, xx1=None:g.V().has('person','name','marko').out('knows').has('person','name','vadas'))], 
 -    'g_mergeEXlabel_knows_out_marko_in_vadas_weight_05X_exists': [(lambda g, xx1=None:g.addV('person').property('name','marko').as_('a').addV('person').property('name','vadas').as_('b').addE('knows').from_('a').to('b')), (lambda g, xx1=None:g.merge_e(xx1)), (lambda g, xx1=None:g.V().has('person','name','marko').outE('knows').has('weight',float(0.5)).in_v().has('person','name','vadas')), (lambda g, xx1=None:g.V().has('person','name','marko').out('knows').has('person','name','vadas'))], 
 +    'g_V_hasXname_markoX_elementMap_mergeXV_hasXname_lopX_elementMapX': [(lambda g:g.V().has('name', 'marko').element_map().merge(__.V().has('name', 'lop').element_map()))], 
 +    'g_V_mergeEXlabel_selfX_optionXonMatch_emptyX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29).add_e('self')), (lambda g, xx1=None:g.V().merge_e(xx1).option(Merge.on_match, {  })), (lambda g, xx1=None:g.E()), (lambda g, xx1=None:g.E().properties()), (lambda g, xx1=None:g.V())], 
 +    'g_V_mergeEXlabel_selfX_optionXonMatch_nullX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29).add_e('self')), (lambda g, xx1=None:g.V().merge_e(xx1).option(Merge.on_match, None)), (lambda g, xx1=None:g.E()), (lambda g, xx1=None:g.E().properties()), (lambda g, xx1=None:g.V())], 
 +    'g_V_mergeEXemptyX_optionXonCreate_nullX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None:g.V().as_('v').merge_e(xx1).option(Merge.on_create, None).option(Merge.out_v, __.select('v')).option(Merge.in_v, __.select('v'))), (lambda g, xx1=None:g.E()), (lambda g, xx1=None:g.V())], 
 +    'g_V_mergeE_inlineXemptyX_optionXonCreate_nullX': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g:g.V().as_('v').merge_e({ T.label: 'self', Direction.OUT: Merge.out_v, Direction.IN: Merge.in_v }).option(Merge.on_create, None).option(Merge.out_v, __.select('v')).option(Merge.in_v, __.select('v'))), (lambda g:g.E()), (lambda g:g.V())], 
 +    'g_mergeEXemptyX_exists': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29).add_e('self')), (lambda g:g.merge_e({  })), (lambda g:g.E()), (lambda g:g.V())], 
 +    'g_mergeEXemptyX': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g:g.merge_e({  }))], 
 +    'g_V_mergeEXemptyX_two_exist': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29).add_v('person').property('name', 'vadas').property('age', 27)), (lambda g, xx1=None:g.V().as_('v').merge_e(xx1).option(Merge.out_v, __.select('v')).option(Merge.in_v, __.select('v'))), (lambda g, xx1=None:g.E()), (lambda g, xx1=None:g.V())], 
 +    'g_V_mergeE_inlineXemptyX_two_exist': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29).add_v('person').property('name', 'vadas').property('age', 27)), (lambda g:g.V().as_('v').merge_e({ T.label: 'self', Direction.OUT: Merge.out_v, Direction.IN: Merge.in_v }).option(Merge.out_v, __.select('v')).option(Merge.in_v, __.select('v'))), (lambda g:g.E()), (lambda g:g.V())], 
 +    'g_mergeEXnullX': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g:g.merge_e(None))], 
 +    'g_mergeEXnullvarX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None:g.merge_e(xx1))], 
 +    'g_V_limitX1X_mergeEXnullvarX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None:g.V().limit(1).merge_e(xx1))], 
 +    'g_V_mergeEXnullX': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g:g.V().merge_e(None))], 
 +    'g_mergeEXlabel_knows_out_marko_in_vadasX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None:g.merge_e(xx1)), (lambda g, xx1=None:g.V().has('person', 'name', 'marko').out('knows').has('person', 'name', 'vadas'))], 
 +    'g_withSideEffectXa_label_knows_out_marko_in_vadasX_mergeEXselectXaXX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None:g.with_side_effect('a', xx1).merge_e(__.select('a'))), (lambda g, xx1=None:g.V().has('person', 'name', 'marko').out('knows').has('person', 'name', 'vadas'))], 
 +    'g_mergeEXlabel_knows_out_marko1_in_vadas1X': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None:g.merge_e(xx1)), (lambda g, xx1=None:g.V().has('person', 'name', 'marko').out('knows').has('person', 'name', 'vadas'))], 
 +    'g_mergeEXlabel_knows_out_marko_in_vadas_weight_05X_exists': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').as_('a').add_v('person').property('name', 'vadas').as_('b').add_e('knows').from_('a').to('b')), (lambda g, xx1=None:g.merge_e(xx1)), (lambda g, xx1=None:g.V().has('person', 'name', 'marko').out_e('knows').has('weight', 0.5).in_v().has('person', 'name', 'vadas')), (lambda g, xx1=None:g.V().has('person', 'name', 'marko').out('knows').has('person', 'name', 'vadas'))], 
      'g_mergeEXlabel_knows_out_marko_in_vadas_weight_05X': [(lambda g, xx1=None:g.merge_e(xx1))], 
 -    'g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX': [(lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2).option(Merge.on_match,xx3))], 
 -    'g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property('name','marko').as_('a').addV('person').property('name','vadas').as_('b').addE('knows').from_('a').to('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2).option(Merge.on_match,xx3)), (lambda g, xx1=None,xx3=None,xx2=None:g.V()), (lambda g, xx1=None,xx3=None,xx2=None:g.E().hasLabel( [...]
 -    'g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property('name','marko').as_('a').addV('person').property('name','vadas').as_('b').addE('knows').from_('a').to('b').property('created','Y')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2).option(Merge.on_match,xx3)), (lambda g, xx1=None,xx3=None,xx2=None:g.V()), (lambda g, xx1=None,x [...]
 -    'g_V_hasXperson_name_marko_X_mergeEXlabel_knowsX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property('name','marko').as_('a').addV('person').property('name','vadas').as_('b').addE('knows').from_('a').to('b').property('created','Y').addE('knows').from_('a').to('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.V().has('person','name','marko').merge_e(xx1).option(Merge.on_create,xx2).option(Merge.on_match,x [...]
 -    'g_injectXlabel_knows_out_marko_in_vadasX_mergeE': [(lambda g, xx1=None:g.addV('person').property('name','marko').addV('person').property('name','vadas')), (lambda g, xx1=None:g.inject(xx1).merge_e()), (lambda g, xx1=None:g.V().has('person','name','marko').out('knows').has('person','name','vadas'))], 
 -    'g_mergeEXlabel_knows_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property('name','marko').as_('a').addV('person').property('name','vadas').as_('b').addE('knows').from_('a').to('b').property('created','Y').addE('knows').from_('b').to('a').property('created','Y')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2).option(Merge.on_match,xx3)), (lambda g, xx1=None, [...]
 -    'g_mergeEXlabel_knows_out_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property('name','marko').as_('a').addV('person').property('name','vadas').as_('b').addE('knows').from_('a').to('b').property('created','Y').addE('knows').from_('b').to('a').property('created','Y')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2).option(Merge.on_match,xx3)), (lambda g, xx1=None [...]
 -    'g_mergeEXout_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property('name','marko').as_('a').addV('person').property('name','vadas').as_('b').addE('knows').from_('a').to('b').property('created','Y').addE('knows').from_('b').to('a').property('created','Y')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2).option(Merge.on_match,xx3)), (lambda g, xx1=None,xx3=None,xx [...]
 -    'g_V_hasXperson_name_marko_X_mergeEXlabel_self_out_vadas1_in_vadas1X': [(lambda g, xx1=None:g.addV('person').property('name','marko').addV('person').property('name','vadas')), (lambda g, xx1=None:g.V().has('person','name','marko').merge_e(xx1)), (lambda g, xx1=None:g.V()), (lambda g, xx1=None:g.E()), (lambda g, xx1=None:g.E().hasLabel('self').bothV().has('name','vadas'))], 
 -    'g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX_exists': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property('name','marko').as_('a').addV('person').property('name','vadas').as_('b').addE('knows').from_('a').to('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.withSideEffect('c',xx2).withSideEffect('m',xx3).merge_e(xx1).option(Merge.on_create,__.select('c')).option(Merge.on [...]
 -    'g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property('name','marko').as_('a').addV('person').property('name','vadas').as_('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.withSideEffect('c',xx2).withSideEffect('m',xx3).merge_e(xx1).option(Merge.on_create,__.select('c')).option(Merge.on_match,__.select('m'))), (lambda g, xx1= [...]
 -    'g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko1_in_vadas1X_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property('name','marko').as_('a').addV('person').property('name','vadas').as_('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.withSideEffect('c',xx2).withSideEffect('m',xx3).merge_e(xx1).option(Merge.on_create,__.select('c')).option(Merge.on_match,__.select('m'))), (lambda g, xx [...]
 -    'g_mergeEXlabel_knows_out_marko_in_vadasX_aliased_direction': [(lambda g, xx1=None:g.addV('person').property('name','marko').addV('person').property('name','vadas')), (lambda g, xx1=None:g.merge_e(xx1)), (lambda g, xx1=None:g.V().has('person','name','marko').out('knows').has('person','name','vadas'))], 
 -    'g_injectXlabel_knows_out_marko_in_vadas_label_self_out_vadas_in_vadasX': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').addV('person').property('name','vadas')), (lambda g, xx1=None,xx2=None:g.inject(xx1,xx2).merge_e()), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.E()), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko').out('knows').has('person','name','vadas')), (lambda g, xx1=None,xx2=None:g.V().has('person','name','va [...]
 -    'g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_sideEffectXpropertiesXweightX_dropX_selectXmXX_exists': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property('name','marko').as_('a').addV('person').property('name','vadas').as_('b').addE('knows').property('weight',float(1.0)).from_('a').to('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.withSideEffect('c',xx2).withSideEffect('m',xx3).m [...]
 -    'g_mergeE_with_outVinV_options_map': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property('name','marko').addV('person').property('name','vadas')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.out_v,xx2).option(Merge.in_v,xx3)), (lambda g, xx1=None,xx3=None,xx2=None:g.V()), (lambda g, xx1=None,xx3=None,xx2=None:g.V().has('name','marko').out('knows').has('name','vadas'))], 
 -    'g_mergeE_with_outVinV_options_select': [(lambda g, xx1=None,vid2=None,vid1=None:g.addV('person').property('name','marko').addV('person').property('name','vadas')), (lambda g, xx1=None,vid2=None,vid1=None:g.V(vid1).as_('x').V(vid2).as_('y').merge_e(xx1).option(Merge.out_v,__.select('x')).option(Merge.in_v,__.select('y'))), (lambda g, xx1=None,vid2=None,vid1=None:g.V()), (lambda g, xx1=None,vid2=None,vid1=None:g.V().has('name','marko').out('knows').has('name','vadas'))], 
 -    'g_mergeE_with_eid_specified_and_inheritance_1': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').addV('person').property('name','vadas')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.E()), (lambda g, xx1=None,xx2=None:g.E('201')), (lambda g, xx1=None,xx2=None:g.V().has('name','marko').out('knows').has('name','vadas'))], 
 -    'g_mergeE_with_eid_specified_and_inheritance_2': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').addV('person').property('name','vadas')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.E()), (lambda g, xx1=None,xx2=None:g.E('201')), (lambda g, xx1=None,xx2=None:g.V().has('name','marko').out('knows').has('name','vadas'))], 
 -    'g_mergeE_outV_override_prohibited': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').addV('person').property('name','vadas')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2))], 
 -    'g_mergeE_inV_override_prohibited': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').addV('person').property('name','vadas')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2))], 
 -    'g_mergeE_label_override_prohibited': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').addV('person').property('name','vadas')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2))], 
 -    'g_mergeE_id_override_prohibited': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').addV('person').property('name','vadas')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2))], 
 -    'g_mergeV_mergeE_combination_new_vertices': [(lambda g, xx1=None,xx3=None,xx2=None:g.merge_v(xx1).as_('outV').merge_v(xx2).as_('inV').merge_e(xx3).option(Merge.out_v,__.select('outV')).option(Merge.in_v,__.select('inV'))), (lambda g, xx1=None,xx3=None,xx2=None:g.V()), (lambda g, xx1=None,xx3=None,xx2=None:g.E()), (lambda g, xx1=None,xx3=None,xx2=None:g.V().has('name','marko').out('knows').has('name','vadas'))], 
 -    'g_mergeV_mergeE_combination_existing_vertices': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property('name','marko').addV('person').property('name','vadas')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_v(xx1).as_('outV').merge_v(xx2).as_('inV').merge_e(xx3).option(Merge.out_v,__.select('outV')).option(Merge.in_v,__.select('inV'))), (lambda g, xx1=None,xx3=None,xx2=None:g.V()), (lambda g, xx1=None,xx3=None,xx2=None:g.E()), (lambda g, xx1=None,xx3=None,xx2=None:g.V().h [...]
 -    'g_V_asXvX_mergeEXxx1X_optionXMerge_onMatch_xx2X_optionXMerge_outV_selectXvXX_optionXMerge_inV_selectXvXX': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.V().as_('v').merge_e(xx1).option(Merge.on_match,xx2).option(Merge.out_v,__.select('v')).option(Merge.in_v,__.select('v')))], 
 -    'g_V_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_sideEffectXpropertyXweight_0XX_constantXemptyXX': [(lambda g, xx1=None:g.addV('person').property('name','marko').as_('a').addV('person').property('name','vadas').as_('b').addE('knows').property('weight',1).from_('a').to('b')), (lambda g, xx1=None:g.V().merge_e(xx1).option(Merge.on_match,__.sideEffect(__.property('weight',0)).constant({})))], 
 -    'g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_sideEffectXpropertyXweight_0XX_constantXemptyXX': [(lambda g, xx1=None:g.addV('person').property('name','marko').as_('a').addV('person').property('name','vadas').as_('b').addE('knows').property('weight',1).from_('a').to('b')), (lambda g, xx1=None:g.merge_e(xx1).option(Merge.on_match,__.sideEffect(__.property('weight',0)).constant({}))), (lambda g, xx1=None:g.V()), (lambda g, xx1=None:g.E().hasLabel('knows').has('weight',1)), ( [...]
 -    'g_injectXlist1_list2X_mergeEXlimitXlocal_1XX_optionXonCreate_rangeXlocal_1_2XX_optionXonMatch_tailXlocalXX_to_match': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29).as_('marko').addV('person').property('name','vadas').property('age',27).as_('vadas').addV('software').property('name','lop').property('lang','java').as_('lop').addV('person').property('name','josh').property('age',32).as_('josh').addV('software').property('name','ripple').prop [...]
 -    'g_injectXlist1_list2X_mergeEXlimitXlocal_1XX_optionXonCreate_rangeXlocal_1_2XX_optionXonMatch_tailXlocalXX_to_create': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29).as_('marko').addV('person').property('name','vadas').property('age',27).as_('vadas').addV('software').property('name','lop').property('lang','java').as_('lop').addV('person').property('name','josh').property('age',32).as_('josh').addV('software').property('name','ripple').pro [...]
 -    'g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_weight_nullX_allowed': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').as_('a').addV('person').property('name','vadas').as_('b').addE('knows').from_('a').to('b').property('weight',float(1.0))), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_match,xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.E().hasLabel('knows')), (lambda g, xx1=None,xx2=None:g.E().hasLabel('kn [...]
 -    'g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_weight_nullX': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').as_('a').addV('person').property('name','vadas').as_('b').addE('knows').from_('a').to('b').property('weight',float(1.0))), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_match,xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.E().hasLabel('knows')), (lambda g, xx1=None,xx2=None:g.E().hasLabel('knows').ha [...]
 -    'g_mergeVXemptyX_optionXonMatch_nullX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.merge_v({}).option(Merge.on_match,None)), (lambda g:g.V().has('person','name','marko').has('age',29))], 
 -    'g_V_mergeVXemptyX_optionXonMatch_nullX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.V().merge_v({}).option(Merge.on_match,None)), (lambda g:g.V().has('person','name','marko').has('age',29))], 
 -    'g_mergeVXnullX_optionXonCreate_label_null_name_markoX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.merge_v(xx1))], 
 -    'g_V_mergeVXnullX_optionXonCreate_label_null_name_markoX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.V().merge_v(xx1))], 
 -    'g_mergeVXlabel_person_name_stephenX_optionXonCreate_nullX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.merge_v(xx1).option(Merge.on_create,None)), (lambda g, xx1=None:g.V()), (lambda g, xx1=None:g.V().has('person','name','marko')), (lambda g, xx1=None:g.V().has('person','name','stephen'))], 
 -    'g_V_mergeVXlabel_person_name_stephenX_optionXonCreate_nullX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.V().merge_v(xx1).option(Merge.on_create,None)), (lambda g, xx1=None:g.V()), (lambda g, xx1=None:g.V().has('person','name','marko')), (lambda g, xx1=None:g.V().has('person','name','stephen'))], 
 -    'g_mergeVXnullX_optionXonCreate_emptyX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.merge_v(None).option(Merge.on_create,{})), (lambda g:g.V())], 
 -    'g_V_mergeVXnullX_optionXonCreate_emptyX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.V().merge_v(None).option(Merge.on_create,{})), (lambda g:g.V())], 
 -    'g_mergeVXemptyX_no_existing': [(lambda g:g.merge_v({})), (lambda g:g.V())], 
 -    'g_injectX0X_mergeVXemptyX_no_existing': [(lambda g:g.inject(0).merge_v({})), (lambda g:g.V())], 
 -    'g_mergeVXemptyX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.merge_v({})), (lambda g:g.V().has('person','name','marko').has('age',29))], 
 -    'g_V_mergeVXemptyX_two_exist': [(lambda g:g.addV('person').property('name','marko').property('age',29).addV('person').property('name','vadas').property('age',27)), (lambda g:g.V().merge_v({})), (lambda g:g.V()), (lambda g:g.V().has('person','name','marko').has('age',29)), (lambda g:g.V().has('person','name','vadas').has('age',27))], 
 -    'g_mergeVXnullX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.merge_v(None)), (lambda g:g.V())], 
 -    'g_V_mergeVXnullX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.V().merge_v(None)), (lambda g:g.V())], 
 -    'g_mergeVXlabel_person_name_stephenX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.merge_v(xx1)), (lambda g, xx1=None:g.V().has('person','name','stephen'))], 
 -    'g_mergeVXlabel_person_name_markoX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.merge_v(xx1)), (lambda g, xx1=None:g.V().has('person','name','marko'))], 
 -    'g_mergeVXlabel_person_name_stephenX_optionXonCreate_label_person_name_stephen_age_19X_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create,xx2)), (lambda g, xx1=None,xx2=None:g.V().has('person','name','stephen').has('age',19))], 
 -    'g_mergeVXlabel_person_name_markoX_optionXonMatch_age_19X_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_match,xx2)), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko').has('age',19))], 
 -    'g_withSideEffectXc_label_person_name_stephenX_withSideEffectXm_label_person_name_stephen_age_19X_mergeVXselectXcXX_optionXonCreate_selectXmXX_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.withSideEffect('c',xx1).withSideEffect('m',xx2).merge_v(__.select('c')).option(Merge.on_create,__.select('m'))), (lambda g, xx1=None,xx2=None:g.V().has('person','name','stephen').has('age',19))], 
 -    'g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_mergeVXselectXcXX_optionXonMatch_selectXmXX_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.withSideEffect('c',xx1).withSideEffect('m',xx2).merge_v(__.select('c')).option(Merge.on_match,__.select('m'))), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko').has('age',19))], 
 -    'g_mergeVXlabel_person_name_markoX_propertyXname_vadas_acl_publicX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.merge_v(xx1).property('name','vadas','acl','public')), (lambda g, xx1=None:g.V().properties('name').hasValue('vadas').has('acl','public'))], 
 -    'g_injectX0X_mergeVXlabel_person_name_stephenX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.inject(0).merge_v(xx1)), (lambda g, xx1=None:g.V().has('person','name','stephen'))], 
 -    'g_injectX0X_mergeVXlabel_person_name_markoX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.inject(0).merge_v(xx1)), (lambda g, xx1=None:g.V().has('person','name','marko'))], 
 -    'g_injectX0X_mergeVXlabel_person_name_stephenX_optionXonCreate_label_person_name_stephen_age_19X_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.inject(0).merge_v(xx1).option(Merge.on_create,xx2)), (lambda g, xx1=None,xx2=None:g.V().has('person','name','stephen').has('age',19))], 
 -    'g_injectX0X_mergeVXlabel_person_name_markoX_optionXonMatch_age_19X_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.inject(0).merge_v(xx1).option(Merge.on_match,xx2)), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko').has('age',19))], 
 -    'g_withSideEffectXc_label_person_name_stephenX_withSideEffectXm_label_person_name_stephen_age_19X_injectX0X_mergeVXselectXcXX_optionXonCreate_selectXmXX_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.withSideEffect('c',xx1).withSideEffect('m',xx2).inject(0).merge_v(__.select('c')).option(Merge.on_create,__.select('m'))), (lambda g, xx1=None,xx2=None:g.V().has('person','name','stephen').has('age',19))], 
 -    'g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_injectX0X_mergeVXselectXcXX_optionXonMatch_selectXmXX_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.withSideEffect('c',xx1).withSideEffect('m',xx2).inject(0).merge_v(__.select('c')).option(Merge.on_match,__.select('m'))), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko').has('age',19))], 
 -    'g_injectX0X_mergeVXlabel_person_name_markoX_propertyXname_vadas_acl_publicX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.inject(0).merge_v(xx1).property('name','vadas','acl','public')), (lambda g, xx1=None:g.V().properties('name').hasValue('vadas').has('acl','public'))], 
 -    'g_injectXlabel_person_name_marko_label_person_name_stephenX_mergeVXidentityX': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.inject(xx1,xx2).merge_v(__.identity())), (lambda g, xx1=None,xx2=None:g.V().has('person','name','stephen')), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko')), (lambda g, xx1=None,xx2=None:g.V())], 
 -    'g_injectXlabel_person_name_marko_label_person_name_stephenX_mergeV': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.inject(xx1,xx2).merge_v()), (lambda g, xx1=None,xx2=None:g.V().has('person','name','stephen')), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko')), (lambda g, xx1=None,xx2=None:g.V())], 
 -    'g_mergeVXlabel_person_name_stephenX_propertyXlist_name_steveX': [(lambda g, xx1=None:g.addV('person').property(Cardinality.list_,'name','stephen')), (lambda g, xx1=None:g.merge_v(xx1).property(Cardinality.list_,'name','steve')), (lambda g, xx1=None:g.V()), (lambda g, xx1=None:g.V().properties('name').hasValue('steve')), (lambda g, xx1=None:g.V().properties('name').hasValue('stephen')), (lambda g, xx1=None:g.V().properties('name'))], 
 -    'g_mergeXlabel_person_name_vadasX_optionXonMatch_age_35X': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','vadas').property('age',29).addV('person').property('name','vadas').property('age',27)), (lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_match,xx2)), (lambda g, xx1=None,xx2=None:g.V().has('age',35)), (lambda g, xx1=None,xx2=None:g.V())], 
 -    'g_V_mapXmergeXlabel_person_name_joshXX': [(lambda g, xx1=None:g.addV('person').property('name','vadas').property('age',29).addV('person').property('name','stephen').property('age',27)), (lambda g, xx1=None:g.V().map(__.merge_v(xx1))), (lambda g, xx1=None:g.V().has('person','name','josh')), (lambda g, xx1=None:g.V())], 
 -    'g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_mergeVXselectXcXX_optionXonMatch_sideEffectXpropertiesXageX_dropX_selectXmXX_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)), (lambda g, xx1=None,xx2=None:g.withSideEffect('c',xx1).withSideEffect('m',xx2).merge_v(__.select('c')).option(Merge.on_match,__.sideEffect(__.prop [...]
 -    'g_withSideEffectXm_age_19X_V_hasXperson_name_markoX_mergeVXselectXcXX_optionXonMatch_sideEffectXpropertiesXageX_dropX_selectXmXX_option': [(lambda g, xx1=None:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)), (lambda g, xx1=None:g.withSideEffect('m',xx1).V().has('person','name','marko').merge_v({}).option(Merge.on_match,__.sideEffect(__.properties('age').drop()).select('m')))], 
 -    'g_mergeV_onCreate_inheritance_existing': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','mike').property(T.id_,'1')), (lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create,xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.V('1').has('person','name','mike'))], 
 -    'g_mergeV_onCreate_inheritance_new_1': [(lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create,xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.V('1').has('person','name','mike'))], 
 -    'g_mergeV_onCreate_inheritance_new_2': [(lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create,xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.V('1').has('person','name','mike'))], 
 -    'g_mergeV_label_override_prohibited': [(lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create,xx2))], 
 -    'g_mergeV_id_override_prohibited': [(lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create,xx2))], 
 +    'g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX': [(lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create, xx2).option(Merge.on_match, xx3))], 
 +    'g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists': [(lambda g, xx1=None,xx3=None,xx2=None:g.add_v('person').property('name', 'marko').as_('a').add_v('person').property('name', 'vadas').as_('b').add_e('knows').from_('a').to('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create, xx2).option(Merge.on_match, xx3)), (lambda g, xx1=None,xx3=None,xx2=None:g.V()), (lambda g, xx1=None,xx3=None,xx2=None:g.E().ha [...]
 +    'g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated': [(lambda g, xx1=None,xx3=None,xx2=None:g.add_v('person').property('name', 'marko').as_('a').add_v('person').property('name', 'vadas').as_('b').add_e('knows').from_('a').to('b').property('created', 'Y')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create, xx2).option(Merge.on_match, xx3)), (lambda g, xx1=None,xx3=None,xx2=None:g.V()), (lambda g, xx [...]
 +    'g_V_hasXperson_name_marko_X_mergeEXlabel_knowsX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated': [(lambda g, xx1=None,xx3=None,xx2=None:g.add_v('person').property('name', 'marko').as_('a').add_v('person').property('name', 'vadas').as_('b').add_e('knows').from_('a').to('b').property('created', 'Y').add_e('knows').from_('a').to('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.V().has('person', 'name', 'marko').merge_e(xx1).option(Merge.on_create, xx2).option(Merge. [...]
 +    'g_injectXlabel_knows_out_marko_in_vadasX_mergeE': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None:g.inject(xx1).merge_e()), (lambda g, xx1=None:g.V().has('person', 'name', 'marko').out('knows').has('person', 'name', 'vadas'))], 
 +    'g_mergeEXlabel_knows_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated': [(lambda g, xx1=None,xx3=None,xx2=None:g.add_v('person').property('name', 'marko').as_('a').add_v('person').property('name', 'vadas').as_('b').add_e('knows').from_('a').to('b').property('created', 'Y').add_e('knows').from_('b').to('a').property('created', 'Y')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create, xx2).option(Merge.on_match, xx3)), (lambda g, [...]
 +    'g_mergeEXlabel_knows_out_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated': [(lambda g, xx1=None,xx3=None,xx2=None:g.add_v('person').property('name', 'marko').as_('a').add_v('person').property('name', 'vadas').as_('b').add_e('knows').from_('a').to('b').property('created', 'Y').add_e('knows').from_('b').to('a').property('created', 'Y')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create, xx2).option(Merge.on_match, xx3)), (lambda g [...]
 +    'g_mergeEXout_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated': [(lambda g, xx1=None,xx3=None,xx2=None:g.add_v('person').property('name', 'marko').as_('a').add_v('person').property('name', 'vadas').as_('b').add_e('knows').from_('a').to('b').property('created', 'Y').add_e('knows').from_('b').to('a').property('created', 'Y')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create, xx2).option(Merge.on_match, xx3)), (lambda g, xx1=None,x [...]
 +    'g_V_hasXperson_name_marko_X_mergeEXlabel_self_out_vadas1_in_vadas1X': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None:g.V().has('person', 'name', 'marko').merge_e(xx1)), (lambda g, xx1=None:g.V()), (lambda g, xx1=None:g.E()), (lambda g, xx1=None:g.E().has_label('self').both_v().has('name', 'vadas'))], 
 +    'g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX_exists': [(lambda g, xx1=None,xx3=None,xx2=None:g.add_v('person').property('name', 'marko').as_('a').add_v('person').property('name', 'vadas').as_('b').add_e('knows').from_('a').to('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.with_side_effect('c', xx2).with_side_effect('m', xx3).merge_e(xx1).option(Merge.on_create, __.select('c')).opt [...]
 +    'g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX': [(lambda g, xx1=None,xx3=None,xx2=None:g.add_v('person').property('name', 'marko').as_('a').add_v('person').property('name', 'vadas').as_('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.with_side_effect('c', xx2).with_side_effect('m', xx3).merge_e(xx1).option(Merge.on_create, __.select('c')).option(Merge.on_match, __.select('m'))), (la [...]
 +    'g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko1_in_vadas1X_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX': [(lambda g, xx1=None,xx3=None,xx2=None:g.add_v('person').property('name', 'marko').as_('a').add_v('person').property('name', 'vadas').as_('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.with_side_effect('c', xx2).with_side_effect('m', xx3).merge_e(xx1).option(Merge.on_create, __.select('c')).option(Merge.on_match, __.select('m'))), ( [...]
 +    'g_mergeEXlabel_knows_out_marko_in_vadasX_aliased_direction': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None:g.merge_e(xx1)), (lambda g, xx1=None:g.V().has('person', 'name', 'marko').out('knows').has('person', 'name', 'vadas'))], 
 +    'g_injectXlabel_knows_out_marko_in_vadas_label_self_out_vadas_in_vadasX': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None,xx2=None:g.inject(xx1, xx2).merge_e()), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.E()), (lambda g, xx1=None,xx2=None:g.V().has('person', 'name', 'marko').out('knows').has('person', 'name', 'vadas')), (lambda g, xx1=None,xx2=None:g.V().has('person',  [...]
 +    'g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_sideEffectXpropertiesXweightX_dropX_selectXmXX_exists': [(lambda g, xx1=None,xx3=None,xx2=None:g.add_v('person').property('name', 'marko').as_('a').add_v('person').property('name', 'vadas').as_('b').add_e('knows').property('weight', 1.0).from_('a').to('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.with_side_effect('c', xx2).with_side_effect('m', x [...]
 +    'g_mergeE_with_outVinV_options_map': [(lambda g, xx1=None,xx3=None,xx2=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.out_v, xx2).option(Merge.in_v, xx3)), (lambda g, xx1=None,xx3=None,xx2=None:g.V()), (lambda g, xx1=None,xx3=None,xx2=None:g.V().has('name', 'marko').out('knows').has('name', 'vadas'))], 
 +    'g_mergeE_inline_with_outVinV_options_map': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None,xx2=None:g.merge_e({ Direction.OUT: Merge.out_v, Direction.IN: Merge.in_v, T.label: 'knows' }).option(Merge.out_v, xx1).option(Merge.in_v, xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.V().has('name', 'marko').out('knows').has('name', 'vadas'))], 
 +    'g_mergeE_with_outVinV_options_select': [(lambda g, xx1=None,vid2=None,vid1=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None,vid2=None,vid1=None:g.V(vid1).as_('x').V(vid2).as_('y').merge_e(xx1).option(Merge.out_v, __.select('x')).option(Merge.in_v, __.select('y'))), (lambda g, xx1=None,vid2=None,vid1=None:g.V()), (lambda g, xx1=None,vid2=None,vid1=None:g.V().has('name', 'marko').out('knows').has('name', 'vadas'))], 
 +    'g_mergeE_inline_with_outVinV_options_select': [(lambda g, vid2=None,vid1=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, vid2=None,vid1=None:g.V(vid1).as_('x').V(vid2).as_('y').merge_e({ Direction.OUT: Merge.out_v, Direction.IN: Merge.in_v, T.label: 'knows' }).option(Merge.out_v, __.select('x')).option(Merge.in_v, __.select('y'))), (lambda g, vid2=None,vid1=None:g.V()), (lambda g, vid2=None,vid1=None:g.V().has('name', 'marko') [...]
 +    'g_mergeE_with_eid_specified_and_inheritance_1': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create, xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.E()), (lambda g, xx1=None,xx2=None:g.E('201')), (lambda g, xx1=None,xx2=None:g.V().has('name', 'marko').out('knows').has('name', 'vadas'))], 
 +    'g_mergeE_with_eid_specified_and_inheritance_2': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create, xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.E()), (lambda g, xx1=None,xx2=None:g.E('201')), (lambda g, xx1=None,xx2=None:g.V().has('name', 'marko').out('knows').has('name', 'vadas'))], 
 +    'g_mergeE_outV_override_prohibited': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create, xx2))], 
 +    'g_mergeE_inV_override_prohibited': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create, xx2))], 
 +    'g_mergeE_label_override_prohibited': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create, xx2))], 
 +    'g_mergeE_id_override_prohibited': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create, xx2))], 
 +    'g_mergeV_mergeE_combination_new_vertices': [(lambda g, xx1=None,xx3=None,xx2=None:g.merge_v(xx1).as_('outV').merge_v(xx2).as_('inV').merge_e(xx3).option(Merge.out_v, __.select('outV')).option(Merge.in_v, __.select('inV'))), (lambda g, xx1=None,xx3=None,xx2=None:g.V()), (lambda g, xx1=None,xx3=None,xx2=None:g.E()), (lambda g, xx1=None,xx3=None,xx2=None:g.V().has('name', 'marko').out('knows').has('name', 'vadas'))], 
 +    'g_mergeV_mergeE_combination_existing_vertices': [(lambda g, xx1=None,xx3=None,xx2=None:g.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_v(xx1).as_('outV').merge_v(xx2).as_('inV').merge_e(xx3).option(Merge.out_v, __.select('outV')).option(Merge.in_v, __.select('inV'))), (lambda g, xx1=None,xx3=None,xx2=None:g.V()), (lambda g, xx1=None,xx3=None,xx2=None:g.E()), (lambda g, xx1=None,xx3=None,xx2=None:g [...]
 +    'g_V_asXvX_mergeEXxx1X_optionXMerge_onMatch_xx2X_optionXMerge_outV_selectXvXX_optionXMerge_inV_selectXvXX': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None,xx2=None:g.V().as_('v').merge_e(xx1).option(Merge.on_match, xx2).option(Merge.out_v, __.select('v')).option(Merge.in_v, __.select('v')))], 
 +    'g_V_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_sideEffectXpropertyXweight_0XX_constantXemptyXX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').as_('a').add_v('person').property('name', 'vadas').as_('b').add_e('knows').property('weight', 1).from_('a').to('b')), (lambda g, xx1=None:g.V().merge_e(xx1).option(Merge.on_match, __.side_effect(__.property('weight', 0)).constant({  }))), (lambda g, xx1=None:g.V()), (lambda g, xx1=None:g.E()), (lambda g, xx1=Non [...]
 +    'g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_sideEffectXpropertyXweight_0XX_constantXemptyXX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').as_('a').add_v('person').property('name', 'vadas').as_('b').add_e('knows').property('weight', 1).from_('a').to('b')), (lambda g, xx1=None:g.merge_e(xx1).option(Merge.on_match, __.side_effect(__.property('weight', 0)).constant({  }))), (lambda g, xx1=None:g.V()), (lambda g, xx1=None:g.E().has_label('knows').has('we [...]
 +    'g_injectXlist1_list2X_mergeEXlimitXlocal_1XX_optionXonCreate_rangeXlocal_1_2XX_optionXonMatch_tailXlocalXX_to_match': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29).as_('marko').add_v('person').property('name', 'vadas').property('age', 27).as_('vadas').add_v('software').property('name', 'lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh').property('age', 32).as_('josh').add_v('software').property('name',  [...]
 +    'g_injectXlist1_list2X_mergeEXlimitXlocal_1XX_optionXonCreate_rangeXlocal_1_2XX_optionXonMatch_tailXlocalXX_to_create': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29).as_('marko').add_v('person').property('name', 'vadas').property('age', 27).as_('vadas').add_v('software').property('name', 'lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh').property('age', 32).as_('josh').add_v('software').property('name', [...]
++    'g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_weight_nullX_allowed': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').as_('a').add_v('person').property('name', 'vadas').as_('b').add_e('knows').from_('a').to('b').property('weight', 1.0)), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_match, xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.E().has_label('knows')), (lambda g, xx1=None,xx2=None:g.E().has_label(' [...]
++    'g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_weight_nullX': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').as_('a').add_v('person').property('name', 'vadas').as_('b').add_e('knows').from_('a').to('b').property('weight', 1.0)), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_match, xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.E().has_label('knows')), (lambda g, xx1=None,xx2=None:g.E().has_label('knows'). [...]
 +    'g_mergeVXemptyX_optionXonMatch_nullX': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g:g.merge_v({  }).option(Merge.on_match, None)), (lambda g:g.V().has('person', 'name', 'marko').has('age', 29))], 
 +    'g_V_mergeVXemptyX_optionXonMatch_nullX': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g:g.V().merge_v({  }).option(Merge.on_match, None)), (lambda g:g.V().has('person', 'name', 'marko').has('age', 29))], 
 +    'g_mergeVXnullX_optionXonCreate_label_null_name_markoX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None:g.merge_v(xx1))], 
 +    'g_V_mergeVXnullX_optionXonCreate_label_null_name_markoX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None:g.V().merge_v(xx1))], 
 +    'g_mergeVXlabel_person_name_stephenX_optionXonCreate_nullX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None:g.merge_v(xx1).option(Merge.on_create, None)), (lambda g, xx1=None:g.V()), (lambda g, xx1=None:g.V().has('person', 'name', 'marko')), (lambda g, xx1=None:g.V().has('person', 'name', 'stephen'))], 
 +    'g_V_mergeVXlabel_person_name_stephenX_optionXonCreate_nullX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None:g.V().merge_v(xx1).option(Merge.on_create, None)), (lambda g, xx1=None:g.V()), (lambda g, xx1=None:g.V().has('person', 'name', 'marko')), (lambda g, xx1=None:g.V().has('person', 'name', 'stephen'))], 
 +    'g_mergeVXnullX_optionXonCreate_emptyX': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g:g.merge_v(None).option(Merge.on_create, {  })), (lambda g:g.V())], 
 +    'g_V_mergeVXnullX_optionXonCreate_emptyX': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g:g.V().merge_v(None).option(Merge.on_create, {  })), (lambda g:g.V())], 
 +    'g_mergeVXemptyX_no_existing': [(lambda g:g.merge_v({  })), (lambda g:g.V())], 
 +    'g_injectX0X_mergeVXemptyX_no_existing': [(lambda g:g.inject(0).merge_v({  })), (lambda g:g.V())], 
 +    'g_mergeVXemptyX': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g:g.merge_v({  })), (lambda g:g.V().has('person', 'name', 'marko').has('age', 29))], 
 +    'g_V_mergeVXemptyX_two_exist': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29).add_v('person').property('name', 'vadas').property('age', 27)), (lambda g:g.V().merge_v({  })), (lambda g:g.V()), (lambda g:g.V().has('person', 'name', 'marko').has('age', 29)), (lambda g:g.V().has('person', 'name', 'vadas').has('age', 27))], 
 +    'g_mergeVXnullX': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g:g.merge_v(None)), (lambda g:g.V())], 
 +    'g_mergeVXnullvarX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None:g.merge_v(xx1)), (lambda g, xx1=None:g.V())], 
 +    'g_V_mergeVXnullX': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g:g.V().merge_v(None)), (lambda g:g.V())], 
 +    'g_mergeVXlabel_person_name_stephenX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None:g.merge_v(xx1)), (lambda g, xx1=None:g.V().has('person', 'name', 'stephen'))], 
 +    'g_mergeVXlabel_person_name_markoX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None:g.merge_v(xx1)), (lambda g, xx1=None:g.V().has('person', 'name', 'marko'))], 
 +    'g_mergeVXlabel_person_name_stephenX_optionXonCreate_label_person_name_stephen_age_19X_option': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create, xx2)), (lambda g, xx1=None,xx2=None:g.V().has('person', 'name', 'stephen').has('age', 19))], 
 +    'g_mergeVXlabel_person_name_markoX_optionXonMatch_age_19X_option': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_match, xx2)), (lambda g, xx1=None,xx2=None:g.V().has('person', 'name', 'marko').has('age', 19))], 
 +    'g_withSideEffectXc_label_person_name_stephenX_withSideEffectXm_label_person_name_stephen_age_19X_mergeVXselectXcXX_optionXonCreate_selectXmXX_option': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None,xx2=None:g.with_side_effect('c', xx1).with_side_effect('m', xx2).merge_v(__.select('c')).option(Merge.on_create, __.select('m'))), (lambda g, xx1=None,xx2=None:g.V().has('person', 'name', 'stephen').has('age', 19))], 
 +    'g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_mergeVXselectXcXX_optionXonMatch_selectXmXX_option': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None,xx2=None:g.with_side_effect('c', xx1).with_side_effect('m', xx2).merge_v(__.select('c')).option(Merge.on_match, __.select('m'))), (lambda g, xx1=None,xx2=None:g.V().has('person', 'name', 'marko').has('age', 19))], 
 +    'g_mergeVXlabel_person_name_markoX_propertyXname_vadas_acl_publicX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None:g.merge_v(xx1).property('name', 'vadas', 'acl', 'public')), (lambda g, xx1=None:g.V().properties('name').has_value('vadas').has('acl', 'public'))], 
 +    'g_injectX0X_mergeVXlabel_person_name_stephenX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None:g.inject(0).merge_v(xx1)), (lambda g, xx1=None:g.V().has('person', 'name', 'stephen'))], 
 +    'g_injectX0X_mergeVXlabel_person_name_markoX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None:g.inject(0).merge_v(xx1)), (lambda g, xx1=None:g.V().has('person', 'name', 'marko'))], 
 +    'g_injectX0X_mergeVXlabel_person_name_stephenX_optionXonCreate_label_person_name_stephen_age_19X_option': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None,xx2=None:g.inject(0).merge_v(xx1).option(Merge.on_create, xx2)), (lambda g, xx1=None,xx2=None:g.V().has('person', 'name', 'stephen').has('age', 19))], 
 +    'g_injectX0X_mergeVXlabel_person_name_markoX_optionXonMatch_age_19X_option': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None,xx2=None:g.inject(0).merge_v(xx1).option(Merge.on_match, xx2)), (lambda g, xx1=None,xx2=None:g.V().has('person', 'name', 'marko').has('age', 19))], 
 +    'g_withSideEffectXc_label_person_name_stephenX_withSideEffectXm_label_person_name_stephen_age_19X_injectX0X_mergeVXselectXcXX_optionXonCreate_selectXmXX_option': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None,xx2=None:g.with_side_effect('c', xx1).with_side_effect('m', xx2).inject(0).merge_v(__.select('c')).option(Merge.on_create, __.select('m'))), (lambda g, xx1=None,xx2=None:g.V().has('person', 'name', 'stephen'). [...]
 +    'g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_injectX0X_mergeVXselectXcXX_optionXonMatch_selectXmXX_option': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None,xx2=None:g.with_side_effect('c', xx1).with_side_effect('m', xx2).inject(0).merge_v(__.select('c')).option(Merge.on_match, __.select('m'))), (lambda g, xx1=None,xx2=None:g.V().has('person', 'name', 'marko').has('age', 19))], 
 +    'g_injectX0X_mergeVXlabel_person_name_markoX_propertyXname_vadas_acl_publicX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None:g.inject(0).merge_v(xx1).property('name', 'vadas', 'acl', 'public')), (lambda g, xx1=None:g.V().properties('name').has_value('vadas').has('acl', 'public'))], 
 +    'g_injectXlabel_person_name_marko_label_person_name_stephenX_mergeVXidentityX': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None,xx2=None:g.inject(xx1, xx2).merge_v(__.identity())), (lambda g, xx1=None,xx2=None:g.V().has('person', 'name', 'stephen')), (lambda g, xx1=None,xx2=None:g.V().has('person', 'name', 'marko')), (lambda g, xx1=None,xx2=None:g.V())], 
 +    'g_injectXlabel_person_name_marko_label_person_name_stephenX_mergeV': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None,xx2=None:g.inject(xx1, xx2).merge_v()), (lambda g, xx1=None,xx2=None:g.V().has('person', 'name', 'stephen')), (lambda g, xx1=None,xx2=None:g.V().has('person', 'name', 'marko')), (lambda g, xx1=None,xx2=None:g.V())], 
 +    'g_mergeVXlabel_person_name_stephenX_propertyXlist_name_steveX': [(lambda g, xx1=None:g.add_v('person').property(Cardinality.list_, 'name', 'stephen')), (lambda g, xx1=None:g.merge_v(xx1).property(Cardinality.list_, 'name', 'steve')), (lambda g, xx1=None:g.V()), (lambda g, xx1=None:g.V().properties('name').has_value('steve')), (lambda g, xx1=None:g.V().properties('name').has_value('stephen')), (lambda g, xx1=None:g.V().properties('name'))], 
 +    'g_mergeXlabel_person_name_vadasX_optionXonMatch_age_35X': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'vadas').property('age', 29).add_v('person').property('name', 'vadas').property('age', 27)), (lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_match, xx2)), (lambda g, xx1=None,xx2=None:g.V().has('age', 35)), (lambda g, xx1=None,xx2=None:g.V())], 
 +    'g_V_mapXmergeXlabel_person_name_joshXX': [(lambda g, xx1=None:g.add_v('person').property('name', 'vadas').property('age', 29).add_v('person').property('name', 'stephen').property('age', 27)), (lambda g, xx1=None:g.V().map(__.merge_v(xx1))), (lambda g, xx1=None:g.V().has('person', 'name', 'josh')), (lambda g, xx1=None:g.V())], 
 +    'g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_mergeVXselectXcXX_optionXonMatch_sideEffectXpropertiesXageX_dropX_selectXmXX_option': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property(Cardinality.list_, 'age', 29).property(Cardinality.list_, 'age', 31).property(Cardinality.list_, 'age', 32)), (lambda g, xx1=None,xx2=None:g.with_side_effect('c', xx1).with_side_effect('m', xx2).merge_v(__.select('c')).option(Merge.on_match, __.sid [...]
 +    'g_withSideEffectXm_age_19X_V_hasXperson_name_markoX_mergeVXselectXcXX_optionXonMatch_sideEffectXpropertiesXageX_dropX_selectXmXX_option': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property(Cardinality.list_, 'age', 29).property(Cardinality.list_, 'age', 31).property(Cardinality.list_, 'age', 32)), (lambda g, xx1=None:g.with_side_effect('m', xx1).V().has('person', 'name', 'marko').merge_v({  }).option(Merge.on_match, __.side_effect(__.properties('age').drop()) [...]
 +    'g_mergeV_onCreate_inheritance_existing': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'mike').property(T.id_, '1')), (lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create, xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.V('1').has('person', 'name', 'mike'))], 
 +    'g_mergeV_onCreate_inheritance_new_1': [(lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create, xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.V('1').has('person', 'name', 'mike'))], 
 +    'g_mergeV_onCreate_inheritance_new_2': [(lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create, xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.V('1').has('person', 'name', 'mike'))], 
 +    'g_mergeV_label_override_prohibited': [(lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create, xx2))], 
 +    'g_mergeV_id_override_prohibited': [(lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create, xx2))], 
      'g_mergeV_hidden_id_key_prohibited': [(lambda g, xx1=None:g.merge_v(xx1))], 
      'g_mergeV_hidden_label_key_prohibited': [(lambda g, xx1=None:g.merge_v(xx1))], 
      'g_mergeV_hidden_label_value_prohibited': [(lambda g, xx1=None:g.merge_v(xx1))], 
 -    'g_mergeV_hidden_id_key_onCreate_prohibited': [(lambda g, xx1=None:g.merge_v({}).option(Merge.on_create,xx1))], 
 -    'g_mergeV_hidden_label_key_onCreate_prohibited': [(lambda g, xx1=None:g.merge_v({}).option(Merge.on_create,xx1))], 
 -    'g_mergeV_hidden_label_value_onCreate_prohibited': [(lambda g, xx1=None:g.merge_v({}).option(Merge.on_create,xx1))], 
 -    'g_mergeV_hidden_id_key_onMatch_matched_prohibited': [(lambda g, xx1=None:g.addV('vertex')), (lambda g, xx1=None:g.merge_v({}).option(Merge.on_match,xx1))], 
 -    'g_mergeV_hidden_label_key_matched_onMatch_matched_prohibited': [(lambda g, xx1=None:g.addV('vertex')), (lambda g, xx1=None:g.merge_v({}).option(Merge.on_match,xx1))], 
 -    'g_mergeVXname_markoX_optionXonMatch_age_listX33XX': [(lambda g:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)), (lambda g:g.merge_v({'name':'marko'}).option(Merge.on_match,{'age':CardinalityValue.list_(33)})), (lambda g:g.V().has('person','name','marko').has('age',33)), (lambda g:g.V().has('person','name','marko').has('age')), (lambda g:g.V().has('person','name','marko').proper [...]
 -    'g_mergeVXname_markoX_optionXonMatch_age_setX33XX': [(lambda g:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)), (lambda g:g.merge_v({'name':'marko'}).option(Merge.on_match,{'age':CardinalityValue.set_(33)})), (lambda g:g.V().has('person','name','marko').has('age',33)), (lambda g:g.V().has('person','name','marko').has('age')), (lambda g:g.V().has('person','name','marko').properti [...]
 -    'g_mergeVXname_markoX_optionXonMatch_age_setX31XX': [(lambda g:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)), (lambda g:g.merge_v({'name':'marko'}).option(Merge.on_match,{'age':CardinalityValue.set_(31)})), (lambda g:g.V().has('person','name','marko').has('age',31)), (lambda g:g.V().has('person','name','marko').has('age')), (lambda g:g.V().has('person','name','marko').properti [...]
 -    'g_mergeVXname_markoX_optionXonMatch_age_singleX33XX': [(lambda g:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)), (lambda g:g.merge_v({'name':'marko'}).option(Merge.on_match,{'age':CardinalityValue.single(33)})), (lambda g:g.V().has('person','name','marko').has('age',33)), (lambda g:g.V().has('person','name','marko').has('age')), (lambda g:g.V().has('person','name','marko').pro [...]
 -    'g_mergeVXname_markoX_optionXonMatch_age_33_singleX': [(lambda g:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)), (lambda g:g.merge_v({'name':'marko'}).option(Merge.on_match,{'age':33},Cardinality.single)), (lambda g:g.V().has('person','name','marko').has('age',33)), (lambda g:g.V().has('person','name','marko').has('age')), (lambda g:g.V().has('person','name','marko').properties [...]
 -    'g_mergeVXname_markoX_optionXonMatch_name_allen_age_setX31X_singleX': [(lambda g:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)), (lambda g:g.merge_v({'name':'marko'}).option(Merge.on_match,{'name':'allen','age':CardinalityValue.set_(31)},Cardinality.single)), (lambda g:g.V().has('person','name','marko')), (lambda g:g.V().has('person','name','allen').has('age',31)), (lambda g:g. [...]
 -    'g_mergeVXname_markoX_optionXonMatch_name_allen_age_singleX31X_singleX': [(lambda g:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)), (lambda g:g.merge_v({'name':'marko'}).option(Merge.on_match,{'name':'allen','age':CardinalityValue.single(31)},Cardinality.single)), (lambda g:g.V().has('person','name','marko')), (lambda g:g.V().has('person','name','allen').has('age',33)), (lambda [...]
 -    'g_mergeVXname_aliceX_optionXonCreate_age_singleX81XX': [(lambda g:g.merge_v({'name':'alice',T.label:'person'}).option(Merge.on_create,{'age':CardinalityValue.single(81)})), (lambda g:g.V().has('person','name','alice').has('age',81)), (lambda g:g.V().has('person','name','alice').has('age')), (lambda g:g.V().has('person','name','alice').properties('age'))], 
 -    'g_mergeVXname_aliceX_optionXonCreate_age_setX81XX': [(lambda g:g.merge_v({'name':'alice',T.label:'person'}).option(Merge.on_create,{'age':CardinalityValue.set_(81)})), (lambda g:g.V().has('person','name','alice').has('age',81)), (lambda g:g.V().has('person','name','alice').has('age')), (lambda g:g.V().has('person','name','alice').properties('age'))], 
 -    'g_mergeVXname_aliceX_optionXonCreate_age_singleX81X_age_81_setX': [(lambda g:g.merge_v({'name':'alice',T.label:'person'}).option(Merge.on_create,{'age':81},Cardinality.set_)), (lambda g:g.V().has('person','name','alice').has('age',81)), (lambda g:g.V().has('person','name','alice').has('age')), (lambda g:g.V().has('person','name','alice').properties('age'))], 
 -    'g_mergeV_hidden_label_key_onMatch_matched_prohibited': [(lambda g, xx1=None:g.merge_v({}).option(Merge.on_match,xx1))], 
 -    'g_injectXlist1_list2X_mergeVXlimitXlocal_1XX_optionXonCreate_rangeXlocal_1_2X_optionXonMatch_tailXlocalXX_to_match': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.inject(xx1,xx1,xx2).fold().merge_v(__.limit(Scope.local,1)).option(Merge.on_create,__.range_(Scope.local,1,2)).option(Merge.on_match,__.tail(Scope.local))), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko').has('created','N')), (la [...]
 -    'g_injectXlist1_list2X_mergeVXlimitXlocal_1XX_optionXonCreate_rangeXlocal_1_2X_optionXonMatch_tailXlocalXX_to_create': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.inject(xx1,xx1,xx2).fold().merge_v(__.limit(Scope.local,1)).option(Merge.on_create,__.range_(Scope.local,1,2)).option(Merge.on_match,__.tail(Scope.local))), (lambda g, xx1=None,xx2=None:g.V().has('person','name','stephen').hasNot('created')), ( [...]
 -    'g_mergeVXlabel_person_name_marko_age_29X_optionXonMatch_age_nullX_allowed': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_match,xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko').has('age',None))], 
 -    'g_mergeVXlabel_person_name_marko_age_29X_optionXonMatch_age_nullX': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_match,xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko').has('age'))], 
 -    'g_V_age_min': [(lambda g:g.V().age.min_())], 
 -    'g_V_foo_min': [(lambda g:g.V().foo.min_())], 
 -    'g_V_name_min': [(lambda g:g.V().name.min_())], 
 -    'g_V_age_fold_minXlocalX': [(lambda g:g.V().age.fold().min_(Scope.local))], 
 +    'g_mergeV_hidden_id_key_onCreate_prohibited': [(lambda g, xx1=None:g.merge_v({  }).option(Merge.on_create, xx1))], 
 +    'g_mergeV_hidden_label_key_onCreate_prohibited': [(lambda g, xx1=None:g.merge_v({  }).option(Merge.on_create, xx1))], 
 +    'g_mergeV_hidden_label_value_onCreate_prohibited': [(lambda g, xx1=None:g.merge_v({  }).option(Merge.on_create, xx1))], 
 +    'g_mergeV_hidden_id_key_onMatch_matched_prohibited': [(lambda g, xx1=None:g.add_v('vertex')), (lambda g, xx1=None:g.merge_v({  }).option(Merge.on_match, xx1))], 
 +    'g_mergeV_hidden_label_key_matched_onMatch_matched_prohibited': [(lambda g, xx1=None:g.add_v('vertex')), (lambda g, xx1=None:g.merge_v({  }).option(Merge.on_match, xx1))], 
 +    'g_mergeVXname_markoX_optionXonMatch_age_listX33XX': [(lambda g:g.add_v('person').property('name', 'marko').property(Cardinality.list_, 'age', 29).property(Cardinality.list_, 'age', 31).property(Cardinality.list_, 'age', 32)), (lambda g:g.merge_v({ 'name': 'marko' }).option(Merge.on_match, { 'age': CardinalityValue.list_(33) })), (lambda g:g.V().has('person', 'name', 'marko').has('age', 33)), (lambda g:g.V().has('person', 'name', 'marko').has('age')), (lambda g:g.V().has('person', ' [...]
 +    'g_mergeVXname_markoX_optionXonMatch_age_setX33XX': [(lambda g:g.add_v('person').property('name', 'marko').property(Cardinality.list_, 'age', 29).property(Cardinality.list_, 'age', 31).property(Cardinality.list_, 'age', 32)), (lambda g:g.merge_v({ 'name': 'marko' }).option(Merge.on_match, { 'age': CardinalityValue.set_(33) })), (lambda g:g.V().has('person', 'name', 'marko').has('age', 33)), (lambda g:g.V().has('person', 'name', 'marko').has('age')), (lambda g:g.V().has('person', 'na [...]
 +    'g_mergeVXname_markoX_optionXonMatch_age_setX31XX': [(lambda g:g.add_v('person').property('name', 'marko').property(Cardinality.list_, 'age', 29).property(Cardinality.list_, 'age', 31).property(Cardinality.list_, 'age', 32)), (lambda g:g.merge_v({ 'name': 'marko' }).option(Merge.on_match, { 'age': CardinalityValue.set_(31) })), (lambda g:g.V().has('person', 'name', 'marko').has('age', 31)), (lambda g:g.V().has('person', 'name', 'marko').has('age')), (lambda g:g.V().has('person', 'na [...]
 +    'g_mergeVXname_markoX_optionXonMatch_age_singleX33XX': [(lambda g:g.add_v('person').property('name', 'marko').property(Cardinality.list_, 'age', 29).property(Cardinality.list_, 'age', 31).property(Cardinality.list_, 'age', 32)), (lambda g:g.merge_v({ 'name': 'marko' }).option(Merge.on_match, { 'age': CardinalityValue.single(33) })), (lambda g:g.V().has('person', 'name', 'marko').has('age', 33)), (lambda g:g.V().has('person', 'name', 'marko').has('age')), (lambda g:g.V().has('person' [...]
 +    'g_mergeVXname_markoX_optionXonMatch_age_33_singleX': [(lambda g:g.add_v('person').property('name', 'marko').property(Cardinality.list_, 'age', 29).property(Cardinality.list_, 'age', 31).property(Cardinality.list_, 'age', 32)), (lambda g:g.merge_v({ 'name': 'marko' }).option(Merge.on_match, { 'age': 33 }, Cardinality.single)), (lambda g:g.V().has('person', 'name', 'marko').has('age', 33)), (lambda g:g.V().has('person', 'name', 'marko').has('age')), (lambda g:g.V().has('person', 'nam [...]
 +    'g_mergeVXname_markoX_optionXonMatch_name_allen_age_setX31X_singleX': [(lambda g:g.add_v('person').property('name', 'marko').property(Cardinality.list_, 'age', 29).property(Cardinality.list_, 'age', 31).property(Cardinality.list_, 'age', 32)), (lambda g:g.merge_v({ 'name': 'marko' }).option(Merge.on_match, { 'name': 'allen', 'age': CardinalityValue.set_(31) }, Cardinality.single)), (lambda g:g.V().has('person', 'name', 'marko')), (lambda g:g.V().has('person', 'name', 'allen').has('a [...]
 +    'g_mergeVXname_markoX_optionXonMatch_name_allen_age_singleX31X_singleX': [(lambda g:g.add_v('person').property('name', 'marko').property(Cardinality.list_, 'age', 29).property(Cardinality.list_, 'age', 31).property(Cardinality.list_, 'age', 32)), (lambda g:g.merge_v({ 'name': 'marko' }).option(Merge.on_match, { 'name': 'allen', 'age': CardinalityValue.single(31) }, Cardinality.single)), (lambda g:g.V().has('person', 'name', 'marko')), (lambda g:g.V().has('person', 'name', 'allen').h [...]
 +    'g_mergeVXname_aliceX_optionXonCreate_age_singleX81XX': [(lambda g:g.merge_v({ 'name': 'alice', T.label: 'person' }).option(Merge.on_create, { 'age': CardinalityValue.single(81) })), (lambda g:g.V().has('person', 'name', 'alice').has('age', 81)), (lambda g:g.V().has('person', 'name', 'alice').has('age')), (lambda g:g.V().has('person', 'name', 'alice').properties('age'))], 
 +    'g_mergeVXname_aliceX_optionXonCreate_age_setX81XX': [(lambda g:g.merge_v({ 'name': 'alice', T.label: 'person' }).option(Merge.on_create, { 'age': CardinalityValue.set_(81) })), (lambda g:g.V().has('person', 'name', 'alice').has('age', 81)), (lambda g:g.V().has('person', 'name', 'alice').has('age')), (lambda g:g.V().has('person', 'name', 'alice').properties('age'))], 
 +    'g_mergeVXname_aliceX_optionXonCreate_age_singleX81X_age_81_setX': [(lambda g:g.merge_v({ 'name': 'alice', T.label: 'person' }).option(Merge.on_create, { 'age': 81 }, Cardinality.set_)), (lambda g:g.V().has('person', 'name', 'alice').has('age', 81)), (lambda g:g.V().has('person', 'name', 'alice').has('age')), (lambda g:g.V().has('person', 'name', 'alice').properties('age'))], 
 +    'g_mergeV_hidden_label_key_onMatch_matched_prohibited': [(lambda g, xx1=None:g.merge_v({  }).option(Merge.on_match, xx1))], 
 +    'g_injectXlist1_list2X_mergeVXlimitXlocal_1XX_optionXonCreate_rangeXlocal_1_2X_optionXonMatch_tailXlocalXX_to_match': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None,xx2=None:g.inject(xx1, xx1, xx2).fold().as_('m').merge_v(__.select('m').limit(Scope.local, 1)).option(Merge.on_create, __.select('m').range_(Scope.local, 1, 2)).option(Merge.on_match, __.select('m').tail(Scope.local))), (lambda g, xx1=None,xx2=None:g.V( [...]
 +    'g_injectXlist1_list2X_mergeVXlimitXlocal_1XX_optionXonCreate_rangeXlocal_1_2X_optionXonMatch_tailXlocalXX_to_create': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None,xx2=None:g.inject(xx1, xx1, xx2).fold().as_('m').merge_v(__.select('m').limit(Scope.local, 1)).option(Merge.on_create, __.select('m').range_(Scope.local, 1, 2)).option(Merge.on_match, __.select('m').tail(Scope.local))), (lambda g, xx1=None,xx2=None:g.V [...]
++    'g_mergeVXlabel_person_name_marko_age_29X_optionXonMatch_age_nullX_allowed': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_match, xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.V().has('person', 'name', 'marko').has('age', None))], 
++    'g_mergeVXlabel_person_name_marko_age_29X_optionXonMatch_age_nullX': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_match, xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.V().has('person', 'name', 'marko').has('age'))], 
 +    'g_V_age_min': [(lambda g:g.V().values('age').min_())], 
 +    'g_V_foo_min': [(lambda g:g.V().values('foo').min_())], 
 +    'g_V_name_min': [(lambda g:g.V().values('name').min_())], 
 +    'g_V_age_fold_minXlocalX': [(lambda g:g.V().values('age').fold().min_(Scope.local))], 
      'g_V_aggregateXaX_byXageX_capXaX_minXlocalX': [(lambda g:g.V().aggregate('a').by('age').cap('a').min_(Scope.local))], 
 -    'g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_minXlocalX': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().aggregate('a').by('age').cap('a').min_(Scope.local))], 
 +    'g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_minXlocalX': [(lambda g:g.with_strategies(ProductiveByStrategy()).V().aggregate('a').by('age').cap('a').min_(Scope.local))], 
      'g_V_aggregateXaX_byXageX_capXaX_unfold_min': [(lambda g:g.V().aggregate('a').by('age').cap('a').unfold().min_())], 
 -    'g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_unfold_min': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().aggregate('a').by('age').cap('a').unfold().min_())], 
 +    'g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_unfold_min': [(lambda g:g.with_strategies(ProductiveByStrategy()).V().aggregate('a').by('age').cap('a').unfold().min_())], 
      'g_V_aggregateXaX_byXfooX_capXaX_minXlocalX': [(lambda g:g.V().aggregate('a').by('foo').cap('a').min_(Scope.local))], 
 -    'g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_minXlocalX': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().aggregate('a').by('foo').cap('a').min_(Scope.local))], 
 +    'g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_minXlocalX': [(lambda g:g.with_strategies(ProductiveByStrategy()).V().aggregate('a').by('foo').cap('a').min_(Scope.local))], 
      'g_V_aggregateXaX_byXfooX_capXaX_unfold_min': [(lambda g:g.V().aggregate('a').by('foo').cap('a').unfold().min_())], 
 -    'g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_unfold_min': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().aggregate('a').by('foo').cap('a').unfold().min_())], 
 -    'g_V_foo_fold_minXlocalX': [(lambda g:g.V().foo.fold().min_(Scope.local))], 
 -    'g_V_name_fold_minXlocalX': [(lambda g:g.V().name.fold().min_(Scope.local))], 
 -    'g_V_repeatXbothX_timesX5X_age_min': [(lambda g:g.V().repeat(__.both()).times(5).age.min_())], 
 -    'g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_minX': [(lambda g:g.V().hasLabel('software').group().by('name').by(__.bothE().weight.min_()))], 
 -    'g_V_foo_injectX9999999999X_min': [(lambda g, xx1=None:g.V().foo.inject(xx1).min_())], 
 -    'g_VX1X_valuesXageX_minXlocalX': [(lambda g, vid1=None:g.V(vid1).age.min_(Scope.local))], 
 -    'g_V_localXunionXvaluesXageX_outE_valuesXweightXX_foldX_minXlocalX': [(lambda g:g.V().local(__.union(__.age,__.outE().weight).fold()).min_(Scope.local))], 
 -    'g_V_name_order': [(lambda g:g.V().name.order())], 
 -    'g_V_name_order_byXa1_b1X_byXb2_a2X': [(lambda g, c1=None,c2=None:g.V().name.order().by(c1).by(c2))], 
 -    'g_V_order_byXname_ascX_name': [(lambda g:g.V().order().by('name',Order.asc).name)], 
 -    'g_V_order_byXnameX_name': [(lambda g:g.V().order().by('name').name)], 
 -    'g_V_outE_order_byXweight_descX_weight': [(lambda g:g.V().outE().order().by('weight',Order.desc).weight)], 
 -    'g_V_order_byXname_a1_b1X_byXname_b2_a2X_name': [(lambda g, c1=None,c2=None:g.V().order().by('name',c1).by('name',c2).name)], 
 -    'g_V_asXaX_outXcreatedX_asXbX_order_byXshuffleX_selectXa_bX': [(lambda g:g.V().as_('a').out('created').as_('b').order().by(Order.shuffle).select('a','b'))], 
 -    'g_V_both_hasLabelXpersonX_order_byXage_descX_limitX5X_name': [(lambda g:g.V().both().hasLabel('person').order().by('age',Order.desc)[0:5].name)], 
 -    'g_V_properties_order_byXkey_descX_key': [(lambda g:g.V().properties().order().by(T.key,Order.desc).key())], 
 -    'g_V_hasLabelXpersonX_order_byXvalueXageX_descX_name': [(lambda g, l1=None:g.V().hasLabel('person').order().by(l1,Order.desc).name)], 
 -    'g_V_hasLabelXpersonX_group_byXnameX_byXoutE_weight_sumX_orderXlocalX_byXvaluesX': [(lambda g:g.V().hasLabel('person').group().by('name').by(__.outE().weight.sum_()).order(Scope.local).by(Column.values))], 
 -    'g_V_mapXbothE_weight_foldX_order_byXsumXlocalX_descX_byXcountXlocalX_descX': [(lambda g:g.V().map(__.bothE().weight.order().by(Order.asc).fold()).order().by(__.sum_(Scope.local),Order.desc).by(__.count(Scope.local),Order.desc))], 
 -    'g_V_group_byXlabelX_byXname_order_byXdescX_foldX': [(lambda g:g.V().group().by(T.label).by(__.name.order().by(Order.desc).fold()))], 
 -    'g_V_hasLabelXpersonX_group_byXnameX_byXoutE_weight_sumX_unfold_order_byXvalues_descX': [(lambda g:g.V().hasLabel('person').group().by('name').by(__.outE().weight.sum_()).unfold().order().by(Column.values,Order.desc))], 
 -    'g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_descX_byXselectXvX_nameX': [(lambda g:g.V().as_('v').map(__.bothE().weight.fold()).sum_(Scope.local).as_('s').select('v','s').order().by(__.select('s'),Order.desc).by(__.select('v').name))], 
 -    'g_V_hasLabelXpersonX_fold_orderXlocalX_byXageX': [(lambda g:g.V().hasLabel('person').fold().order(Scope.local).by('age'))], 
 -    'g_V_both_hasLabelXpersonX_order_byXage_descX_name': [(lambda g:g.V().both().hasLabel('person').order().by('age',Order.desc).name)], 
 -    'g_V_order_byXoutE_count_descX_byXnameX': [(lambda g:g.V().order().by(__.outE().count(),Order.desc).by('name'))], 
 -    'g_V_hasLabelXpersonX_order_byXageX': [(lambda g:g.V().hasLabel('person').order().by('age'))], 
 +    'g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_unfold_min': [(lambda g:g.with_strategies(ProductiveByStrategy()).V().aggregate('a').by('foo').cap('a').unfold().min_())], 
 +    'g_V_foo_fold_minXlocalX': [(lambda g:g.V().values('foo').fold().min_(Scope.local))], 
 +    'g_V_name_fold_minXlocalX': [(lambda g:g.V().values('name').fold().min_(Scope.local))], 
 +    'g_V_repeatXbothX_timesX5X_age_min': [(lambda g:g.V().repeat(__.both()).times(5).values('age').min_())], 
 +    'g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_minX': [(lambda g:g.V().has_label('software').group().by('name').by(__.both_e().values('weight').min_()))], 
 +    'g_V_foo_injectX9999999999X_min': [(lambda g, xx1=None:g.V().values('foo').inject(xx1).min_())], 
 +    'g_VX1X_valuesXageX_minXlocalX': [(lambda g, vid1=None:g.V(vid1).values('age').min_(Scope.local))], 
 +    'g_V_localXunionXvaluesXageX_outE_valuesXweightXX_foldX_minXlocalX': [(lambda g:g.V().local(__.union(__.values('age'), __.out_e().values('weight')).fold()).min_(Scope.local))], 
 +    'g_V_name_order': [(lambda g:g.V().values('name').order())], 
 +    'g_V_name_order_byXa1_b1X_byXb2_a2X': [],  # skipping as it contains a lambda
 +    'g_V_order_byXname_ascX_name': [(lambda g:g.V().order().by('name', Order.asc).values('name'))], 
 +    'g_V_order_byXnameX_name': [(lambda g:g.V().order().by('name').values('name'))], 
 +    'g_V_outE_order_byXweight_descX_weight': [(lambda g:g.V().out_e().order().by('weight', Order.desc).values('weight'))], 
 +    'g_V_asXaX_outXcreatedX_asXbX_order_byXshuffleX_selectXa_bX': [(lambda g:g.V().as_('a').out('created').as_('b').order().by(Order.shuffle).select('a', 'b'))], 
 +    'g_V_both_hasLabelXpersonX_order_byXage_descX_limitX5X_name': [(lambda g:g.V().both().has_label('person').order().by('age', Order.desc).limit(5).values('name'))], 
 +    'g_V_properties_order_byXkey_descX_key': [(lambda g:g.V().properties().order().by(T.key, Order.desc).key())], 
 +    'g_V_hasLabelXpersonX_order_byXvalueXageX_descX_name': [],  # skipping as it contains a lambda
 +    'g_V_hasLabelXpersonX_group_byXnameX_byXoutE_weight_sumX_orderXlocalX_byXvaluesX': [(lambda g:g.V().has_label('person').group().by('name').by(__.out_e().values('weight').sum_()).order(Scope.local).by(Column.values))], 
 +    'g_V_mapXbothE_weight_foldX_order_byXsumXlocalX_descX_byXcountXlocalX_descX': [(lambda g:g.V().map(__.both_e().values('weight').order().by(Order.asc).fold()).order().by(__.sum_(Scope.local), Order.desc).by(__.count(Scope.local), Order.desc))], 
 +    'g_V_group_byXlabelX_byXname_order_byXdescX_foldX': [(lambda g:g.V().group().by(T.label).by(__.values('name').order().by(Order.desc).fold()))], 
 +    'g_V_hasLabelXpersonX_group_byXnameX_byXoutE_weight_sumX_unfold_order_byXvalues_descX': [(lambda g:g.V().has_label('person').group().by('name').by(__.out_e().values('weight').sum_()).unfold().order().by(Column.values, Order.desc))], 
 +    'g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_descX_byXselectXvX_nameX': [(lambda g:g.V().as_('v').map(__.both_e().values('weight').fold()).sum_(Scope.local).as_('s').select('v', 's').order().by(__.select('s'), Order.desc).by(__.select('v').values('name')))], 
 +    'g_V_hasLabelXpersonX_fold_orderXlocalX_byXageX': [(lambda g:g.V().has_label('person').fold().order(Scope.local).by('age'))], 
 +    'g_V_both_hasLabelXpersonX_order_byXage_descX_name': [(lambda g:g.V().both().has_label('person').order().by('age', Order.desc).values('name'))], 
 +    'g_V_order_byXoutE_count_descX_byXnameX': [(lambda g:g.V().order().by(__.out_e().count(), Order.desc).by('name'))], 
 +    'g_V_hasLabelXpersonX_order_byXageX': [(lambda g:g.V().has_label('person').order().by('age'))], 
      'g_V_order_byXageX': [(lambda g:g.V().order().by('age'))], 
      'g_V_fold_orderXlocalX_byXageX': [(lambda g:g.V().fold().order(Scope.local).by('age'))], 
 -    'g_V_fold_orderXlocalX_byXage_descX': [(lambda g:g.V().fold().order(Scope.local).by('age',Order.desc))], 
 -    'g_V_orXhasLabelXpersonX_hasXsoftware_name_lopXX_order_byXageX': [(lambda g:g.V().or_(__.hasLabel('person'),__.has('software','name','lop')).order().by('age'))], 
 -    'g_withStrategiesXProductiveByStrategyX_V_orXhasLabelXpersonX_hasXsoftware_name_lopXX_order_byXageX': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().or_(__.hasLabel('person'),__.has('software','name','lop')).order().by('age'))], 
 -    'g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalues_descX_byXkeys_ascX': [(lambda g, l1=None,v1=None:g.V(v1).hasLabel('person').map(l1).order(Scope.local).by(Column.values,Order.desc).by(Column.keys,Order.asc))], 
 -    'g_V_hasXsong_name_OHBOYX_outXfollowedByX_outXfollowedByX_order_byXperformancesX_byXsongType_descX': [(lambda g:g.V().has('song','name','OH BOY').out('followedBy').out('followedBy').order().by('performances').by('songType',Order.desc).by('name'))], 
 -    'g_V_hasLabelXsongX_order_byXperformances_descX_byXnameX_rangeX110_120X_name': [(lambda g:g.V().hasLabel('song').order().by('performances',Order.desc).by('name')[110:120].name)], 
 -    'g_VX1X_elementMap_orderXlocalX_byXkeys_descXunfold': [(lambda g, vid1=None:g.V(vid1).elementMap().order(Scope.local).by(Column.keys,Order.desc).unfold())], 
 -    'g_VX1X_elementMap_orderXlocalX_byXkeys_ascXunfold': [(lambda g, vid1=None:g.V(vid1).elementMap().order(Scope.local).by(Column.keys,Order.asc).unfold())], 
 -    'g_VX1X_valuesXageX_orderXlocalX': [(lambda g, vid1=None:g.V(vid1).age.order(Scope.local))], 
 -    'g_V_pageRank_hasXpageRankX': [(lambda g:g.V().pageRank().has('gremlin.pageRankVertexProgram.pageRank'))], 
 -    'g_V_outXcreatedX_pageRank_withXedges_bothEX_withXpropertyName_projectRankX_withXtimes_0X_valueMapXname_projectRankX': [(lambda g:g.V().out('created').pageRank().with_('~tinkerpop.pageRank.edges',__.bothE()).with_('~tinkerpop.pageRank.propertyName','projectRank').with_('~tinkerpop.pageRank.times',0).valueMap('name','projectRank'))], 
 -    'g_V_pageRank_order_byXpageRank_descX_byXnameX_name': [(lambda g:g.V().pageRank().order().by('gremlin.pageRankVertexProgram.pageRank',Order.desc).by('name').name)], 
 -    'g_V_pageRank_order_byXpageRank_descX_name_limitX2X': [(lambda g:g.V().pageRank().order().by('gremlin.pageRankVertexProgram.pageRank',Order.desc).name[0:2])], 
 -    'g_V_pageRank_withXedges_outEXknowsXX_withXpropertyName_friendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX': [(lambda g:g.V().pageRank().with_('~tinkerpop.pageRank.edges',__.outE('knows')).with_('~tinkerpop.pageRank.propertyName','friendRank').project('name','friendRank').by('name').by(__.friendRank.math('ceil(_ * 100)')))], 
 -    'g_V_hasLabelXpersonX_pageRank_withXpropertyName_kpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX': [(lambda g:g.V().hasLabel('person').pageRank().with_('~tinkerpop.pageRank.propertyName','pageRank').project('name','pageRank').by('name').by(__.values('pageRank').math('ceil(_ * 100)')))], 
 -    'g_V_pageRank_withXpropertyName_pageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX': [(lambda g:g.V().pageRank().with_('~tinkerpop.pageRank.propertyName','pageRank').as_('a').out('knows').values('pageRank').as_('b').select('a','b').by().by(__.math('ceil(_ * 100)')))], 
 -    'g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_withXedges_inEXcreatedX_withXtimes_1X_withXpropertyName_priorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX': [(lambda g:g.V().hasLabel('software').has('name','ripple').pageRank(float(1.0)).with_('~tinkerpop.pageRank.edges',__.inE('created')).with_('~tinkerpop.pageRank.times',1).with_('~tinkerpop.pageRank.propertyName','priors').in_('created').union(__.both(),__.identity()).valueMap('name','priors'))], 
 -    'g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXpropertyName_pageRankX_withXedges_inEX_withXtimes_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX': [(lambda g:g.V().out('created').group('m').by(T.label).pageRank(float(1.0)).with_('~tinkerpop.pageRank.propertyName','pageRank').with_('~tinkerpop.pageRank.edges',__.inE()).with_('~tinkerpop.pageRank.times',1).in_('created').group('m').by('pageRank').cap('m'))], 
 -    'g_VX1X_name_path': [(lambda g, vid1=None:g.V(vid1).name.path())], 
 +    'g_V_fold_orderXlocalX_byXage_descX': [(lambda g:g.V().fold().order(Scope.local).by('age', Order.desc))], 
 +    'g_V_orXhasLabelXpersonX_hasXsoftware_name_lopXX_order_byXageX': [(lambda g:g.V().or_(__.has_label('person'), __.has('software', 'name', 'lop')).order().by('age'))], 
 +    'g_withStrategiesXProductiveByStrategyX_V_orXhasLabelXpersonX_hasXsoftware_name_lopXX_order_byXageX': [(lambda g:g.with_strategies(ProductiveByStrategy()).V().or_(__.has_label('person'), __.has('software', 'name', 'lop')).order().by('age'))], 
 +    'g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalues_descX_byXkeys_ascX': [],  # skipping as it contains a lambda
 +    'g_V_hasXsong_name_OHBOYX_outXfollowedByX_outXfollowedByX_order_byXperformancesX_byXsongType_descX': [(lambda g:g.V().has('song', 'name', 'OH BOY').out('followedBy').out('followedBy').order().by('performances').by('songType', Order.desc).by('name'))], 
 +    'g_V_hasLabelXsongX_order_byXperformances_descX_byXnameX_rangeX110_120X_name': [(lambda g:g.V().has_label('song').order().by('performances', Order.desc).by('name').range_(110, 120).values('name'))], 
 +    'g_VX1X_elementMap_orderXlocalX_byXkeys_descXunfold': [(lambda g, vid1=None:g.V(vid1).element_map().order(Scope.local).by(Column.keys, Order.desc).unfold())], 
 +    'g_VX1X_elementMap_orderXlocalX_byXkeys_ascXunfold': [(lambda g, vid1=None:g.V(vid1).element_map().order(Scope.local).by(Column.keys, Order.asc).unfold())], 
 +    'g_VX1X_valuesXageX_orderXlocalX': [(lambda g, vid1=None:g.V(vid1).values('age').order(Scope.local))], 
 +    'g_V_pageRank_hasXpageRankX': [(lambda g:g.V().page_rank().has('gremlin.pageRankVertexProgram.pageRank'))], 
 +    'g_V_outXcreatedX_pageRank_withXedges_bothEX_withXpropertyName_projectRankX_withXtimes_0X_valueMapXname_projectRankX': [(lambda g:g.V().out('created').page_rank().with_('~tinkerpop.pageRank.edges', __.both_e()).with_('~tinkerpop.pageRank.propertyName', 'projectRank').with_('~tinkerpop.pageRank.times', 0).value_map('name', 'projectRank'))], 
 +    'g_V_pageRank_order_byXpageRank_descX_byXnameX_name': [(lambda g:g.V().page_rank().order().by('gremlin.pageRankVertexProgram.pageRank', Order.desc).by('name').values('name'))], 
 +    'g_V_pageRank_order_byXpageRank_descX_name_limitX2X': [(lambda g:g.V().page_rank().order().by('gremlin.pageRankVertexProgram.pageRank', Order.desc).values('name').limit(2))], 
 +    'g_V_pageRank_withXedges_outEXknowsXX_withXpropertyName_friendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX': [(lambda g:g.V().page_rank().with_('~tinkerpop.pageRank.edges', __.out_e('knows')).with_('~tinkerpop.pageRank.propertyName', 'friendRank').project('name', 'friendRank').by('name').by(__.values('friendRank').math('ceil(_ * 100)')))], 
 +    'g_V_hasLabelXpersonX_pageRank_withXpropertyName_kpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX': [(lambda g:g.V().has_label('person').page_rank().with_('~tinkerpop.pageRank.propertyName', 'pageRank').project('name', 'pageRank').by('name').by(__.values('pageRank').math('ceil(_ * 100)')))], 
 +    'g_V_pageRank_withXpropertyName_pageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX': [(lambda g:g.V().page_rank().with_('~tinkerpop.pageRank.propertyName', 'pageRank').as_('a').out('knows').values('pageRank').as_('b').select('a', 'b').by().by(__.math('ceil(_ * 100)')))], 
 +    'g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_withXedges_inEXcreatedX_withXtimes_1X_withXpropertyName_priorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX': [(lambda g:g.V().has_label('software').has('name', 'ripple').page_rank(1.0).with_('~tinkerpop.pageRank.edges', __.in_e('created')).with_('~tinkerpop.pageRank.times', 1).with_('~tinkerpop.pageRank.propertyName', 'priors').in_('created').union(__.both(), __.identity()).value_map('name', 'priors'))], 
 +    'g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXpropertyName_pageRankX_withXedges_inEX_withXtimes_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX': [(lambda g:g.V().out('created').group('m').by(T.label).page_rank(1.0).with_('~tinkerpop.pageRank.propertyName', 'pageRank').with_('~tinkerpop.pageRank.edges', __.in_e()).with_('~tinkerpop.pageRank.times', 1).in_('created').group('m').by('pageRank').cap('m'))], 
 +    'g_VX1X_name_path': [(lambda g, vid1=None:g.V(vid1).values('name').path())], 
      'g_VX1X_out_path_byXageX_byXnameX': [(lambda g, vid1=None:g.V(vid1).out().path().by('age').by('name'))], 
      'g_V_repeatXoutX_timesX2X_path_byXitX_byXnameX_byXlangX': [(lambda g:g.V().repeat(__.out()).times(2).path().by().by('name').by('lang'))], 
      'g_V_out_out_path_byXnameX_byXageX': [(lambda g:g.V().out().out().path().by('name').by('age'))], 
diff --cc gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/AddVertex.feature
index ee8e7c4552,fb091a1560..50be911973
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/AddVertex.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/AddVertex.feature
@@@ -121,33 -94,7 +121,34 @@@ Feature: Step - addV(
      Then the result should have a count of 1
      And the graph should return 1 for count of "g.V().has(\"person\",\"name\",\"stephen\")"
  
 +  Scenario: g_addVXpersonvarX_propertyXname_stephenvarX
 +    Given the empty graph
 +    And the graph initializer of
 +      """
 +      g.addV("person").property("name", "marko").property("age", 29).as("marko").
 +        addV("person").property("name", "vadas").property("age", 27).as("vadas").
 +        addV("software").property("name", "lop").property("lang", "java").as("lop").
 +        addV("person").property("name","josh").property("age", 32).as("josh").
 +        addV("software").property("name", "ripple").property("lang", "java").as("ripple").
 +        addV("person").property("name", "peter").property("age", 35).as('peter').
 +        addE("knows").from("marko").to("vadas").property("weight", 0.5d).
 +        addE("knows").from("marko").to("josh").property("weight", 1.0d).
 +        addE("created").from("marko").to("lop").property("weight", 0.4d).
 +        addE("created").from("josh").to("ripple").property("weight", 1.0d).
 +        addE("created").from("josh").to("lop").property("weight", 0.4d).
 +        addE("created").from("peter").to("lop").property("weight", 0.2d)
 +      """
 +    And using the parameter xx1 defined as "person"
 +    And using the parameter xx2 defined as "stephen"
 +    And the traversal of
 +      """
 +      g.addV(xx1).property("name", xx2)
 +      """
 +    When iterated to list
 +    Then the result should have a count of 1
 +    And the graph should return 1 for count of "g.V().has(\"person\",\"name\",\"stephen\")"
 +
+   @DisallowNullPropertyValues
    Scenario: g_V_hasLabelXpersonX_propertyXname_nullX
      Given the empty graph
      And the graph initializer of
diff --cc gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/MergeEdge.feature
index f8fa2caf20,2a8122083d..e565a016aa
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/MergeEdge.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/MergeEdge.feature
@@@ -1047,4 -947,46 +1047,46 @@@ Feature: Step - mergeE(
      And the graph should return 7 for count of "g.E()"
      And the graph should return 7 for count of "g.E().hasNot(\"created\")"
      And the graph should return 1 for count of "g.V().has(\"person\",\"name\",\"marko\").outE(\"knows\").hasNot(\"created\").inV().has(\"person\",\"name\",\"vadas\")"
-     And the graph should return 1 for count of "g.V().has(\"person\",\"name\",\"vadas\").outE(\"self\").hasNot(\"weight\").inV().has(\"person\",\"name\",\"vadas\")"
 -    And the graph should return 1 for count of "g.V().has(\"person\",\"name\",\"vadas\").outE(\"self\").hasNot('weight').inV().has(\"person\",\"name\",\"vadas\")"
++    And the graph should return 1 for count of "g.V().has(\"person\",\"name\",\"vadas\").outE(\"self\").hasNot(\"weight\").inV().has(\"person\",\"name\",\"vadas\")"
+ 
+   @AllowNullPropertyValues
+   Scenario: g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_weight_nullX_allowed
+     Given the empty graph
+     And the graph initializer of
+       """
+       g.addV("person").property("name", "marko").as("a").
+         addV("person").property("name", "vadas").as("b").
+         addE("knows").from("a").to("b").property("weight",1.0d)
+       """
+     And using the parameter xx1 defined as "m[{\"t[label]\": \"knows\", \"D[OUT]\":\"v[marko]\", \"D[IN]\":\"v[vadas]\"}]"
+     And using the parameter xx2 defined as "m[{\"weight\":null}]"
+     And the traversal of
+       """
+       g.mergeE(xx1).option(Merge.onMatch,xx2)
+       """
+     When iterated to list
+     Then the result should have a count of 1
+     And the graph should return 2 for count of "g.V()"
+     And the graph should return 1 for count of "g.E().hasLabel(\"knows\")"
+     And the graph should return 1 for count of "g.E().hasLabel(\"knows\").has(\"weight\",null)"
+ 
+   @DisallowNullPropertyValues
+   Scenario: g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonMatch_weight_nullX
+     Given the empty graph
+     And the graph initializer of
+       """
+       g.addV("person").property("name", "marko").as("a").
+         addV("person").property("name", "vadas").as("b").
+         addE("knows").from("a").to("b").property("weight",1.0d)
+       """
+     And using the parameter xx1 defined as "m[{\"t[label]\": \"knows\", \"D[OUT]\":\"v[marko]\", \"D[IN]\":\"v[vadas]\"}]"
+     And using the parameter xx2 defined as "m[{\"weight\":null}]"
+     And the traversal of
+       """
+       g.mergeE(xx1).option(Merge.onMatch,xx2)
+       """
+     When iterated to list
+     Then the result should have a count of 1
+     And the graph should return 2 for count of "g.V()"
+     And the graph should return 1 for count of "g.E().hasLabel(\"knows\")"
+     And the graph should return 0 for count of "g.E().hasLabel(\"knows\").has(\"weight\")"