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 2020/12/18 18:32:29 UTC

[tinkerpop] branch TINKERPOP-2451 updated (e00abdb -> c843051)

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

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


 discard e00abdb  wip
     add 730d349  TINKERPOP-2436 The gremlin server starts even if all graphs instantiation has failed
     add b3aeea8  Merge branch 'pr-1342' into 3.4-dev
     add 079cb1a  A few minor fixes to #1342
     add c8c37cb  Merge branch '3.4-dev'
     add 3707fcf  Merge branch 'TINKERPOP-2443'
     add ff56844  Tinkerpop-2437 Do not leave statusAttributes future dangling (#1347)
     add ef09603  Merge branch '3.4-dev'
     add 371f447  Minor version bumps on depenencies/plugins CTR
     add 61c14e7  Merge branch '3.4-dev'
     add e8e3955  gremlin.py regenerated for some reason
     add 8cdcd92  TINKERPOP-2460 Made groovy provided scope for gremlin-driver
     add 7f4d041  Merge branch 'TINKERPOP-2460'
     add 2f5d57a  Added HugeGraph to provider listings
     add 9262a62  Fixed TestSupport file handling to work on windows.
     add 0024651  Added some comments.
     add 25364f7  Merge branch '3.4-dev'
     add aea5d9a  Added README for sample data files in Gremlin Server CTR
     add 7325846  TINKERPOP-2462 Removed some duplication of concerns
     add f64c1f9  Merge branch '3.4-dev'
     add 6e47f53  Removed previously deprecated BytecodeUtil CTR
     add 551e47f  TINKERPOP-2470 Bumped to tornado 6.x for gremlinpython CTR
     add 687d301  TINKERPOP-2469 Improved exception handling out of KdcFixture
     add a6d90ea  Merge branch '3.4-dev'
     add 19411e2  TINKERPOP-2466 Provided more succinct syntax for withStrategies()
     add c666e0b  TINKERPOP-2461 Aligned CoreImports with GroovyTranslator
     add 9145537  TINKERPOP-2461 Added upgrade docs
     add 127821e  TINKERPOP-2461 Added reference documentation for Translator
     add 89529de  Merge branch 'TINKERPOP-2461' into 3.4-dev
     add 88704e9  Merge branch '3.4-dev'
     add 6c353df  Updated Gremlin Server start scripts to use revised withStrategies() syntax
     add a0d35c2  Merge branch '3.4-dev'
     add 70ade8c  TINKERPOP-2474 Refactored withSack() script processing
     add 914d21b  Merge branch '3.4-dev'
     add 325d772  TINKERPOP-2475 Barrier step touches one more element of next loop
     add 70d2ba8  Merge branch '3.4-dev'
     add 1ecd8b4  CHANGELOG update CTR
     add a9aad30  Merge branch '3.4-dev'
     add c6f2f59  TINKERPOP-2001 Add lambda support in gremlin-javascript
     add ef6a078  Merge branch 'TINKERPOP-2001' into 3.4-dev
     add cf29e58  Merge branch '3.4-dev'
     add fc23fab  TINKERPOP-2453 Enable websocket compression for python
     add 733b33a  Merge branch 'TINKERPOP-2453' into 3.4-dev
     add 0c1a32f  Merge branch '3.4-dev'
     add 8b1faa6  Fixed some header formatting problems in upgrade docs CTR
     add 5f79663  Merge branch '3.4-dev'
     add 449caf6  Minor update to javadoc CTR
     add 4d6538f  Fixed small bug in configuration for ReservedKeysVerificationStrategy and made all configuration key tokens public
     add 8273915  Merge branch '3.4-dev'
     add c9b4ee7  Fixed compile error with imports after merge CTR
     add 1ed50ee  HasStep implements configuring
     add bd75c0b  add Configuring to TraversalFilterStep
     add 7723585  Merge branch 'pr-1358' into 3.4-dev
     add 59e5bc9  Final some member variables CTR
     add f96f554  Fix compile problems with gremlin-python due to changes in third-party libraries. CTR
     add b6234e2  Merge branch '3.4-dev'
     add 4624355  TINKERPOP-2445 Remove unnecessary initialization of serializers (#1355)
     add 43f7292  TINKERPOP-2445 Parallelize connection creation (#1360)
     add 245a83d  Merge branch '3.4-dev'
     add 3ba50ed  CTR - Fix failing build by fixing dependencies
     add 8ea559e  Fixed build problems after inclusion of powermock from merge from 3.4-dev
     add a6ebe54  TINKERPOP-2479 Adds config/reset options to :bytecode command
     add 563ac97  Merge branch 'TINKERPOP-2479' into 3.4-dev
     add 8aa3c9d  Merge branch '3.4-dev'
     add e8c4714  Throw error from DriverRemoteConnection on connection error
     add e8cb3c9  TINKERPOP-2409 added a test for expected sockerError behavior
     add 37d19c7  Call reject on open promise if Websicket connection error.
     add ab43b03  Call handleError before rejecting open promise on Websocket error.
     add ffc3d92  Merge branch 'TINKERPOP-2409' into 3.4-dev
     add 2c3ae37  Merge branch '3.4-dev'
     add b4928e1  Minor format fixes to upgrade docs CTR
     add 710d573  Fix stochastic nature of shouldProcessSessionRequestsInOrder (#1365)
     add 6e67b3e  TINKERPOP-2445 Remove quiet time when shutting down Java client (#1363)
     add 6f5b558  Merge branch '3.4-dev'
     add daad70b  TINKERPOP-2438 Reverted a portion of #1346 which has some performance issues.
     add 7fe4a8d  Merge branch '3.4-dev'
     add 5b1b508  Use anonymous traversal for child in test CTR
     add 921171e  Merge branch '3.4-dev'
     add 8a55978  Fixed console test issues related to python dependencies upgrading quietly behind the scenes CTR
     add c6f88be  Merge branch '3.4-dev'
     add 0bf3fc6  Added a new benchmark for GremlinGroovyScriptEngine. CTR
     add 587bb9d  Merge branch '3.4-dev'
     add e242460  TINKERPOP-2482 Rename wsConnectionTimeout to connectionSetupTimeout (#1367)
     add cb2007e  Merge branch '3.4-dev'
     add 96054b5  Added upgrade docs around java driver performance improvement CTR
     add 327a97d  Merge branch '3.4-dev'
     add f41fa10  TINKERPOP-2438 Improved performance of GremlinASTChecker
     add cb34aae  Merge branch 'TINKERPOP-2438' into 3.4-dev
     add 2d6f0a4  Merge branch '3.4-dev'
     add d51253a  Fixed broken link in upgrade docs CTR
     add 79b4d5b  Merge branch '3.4-dev'
     add a81195d  TinkerPop 3.4.9 release
     add 9b16261  Hide binary files that were showing up in source distribution CTR
     add 546562e  Merge branch '3.4-dev'
     add f5df923  Modified the python/jython exclusions for master/3.5.0 CTR
     add 33850cc  Updated website for 3.4.9 release CTR
     add c1a2e3d  Bump to 3.4.9-SNAPSHOT
     add 62457b5  Merge branch '3.4-dev'
     add b56ec83  Bumped to gmavenplus plugin 1.12.0. CTR
     add f49b603  Merge branch '3.4-dev'
     add 856f3a5  Removed gremlin-python dependency for gmavenplus.
     add a8396e8  Revert gmavenplus to 1.11.0.
     add 3f55514  Merge branch '3.4-dev'
     add fbb5a34  Fix broken link CTR
     add 1497704  Merge branch '3.4-dev'
     add a9deecb  Fixed bug in Lambda translation for PythonTranslator. CTR
     add 7685b54  Merge branch '3.4-dev'
     new c843051  TINKERPOP-2451 Added JavascriptTranslator for Java

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (e00abdb)
            \
             N -- N -- N   refs/heads/TINKERPOP-2451 (c843051)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

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                                 |  96 ++-
 docs/site/home/downloads.html                      |  53 +-
 docs/site/home/img/logos/hugegraph-logo.png        | Bin 0 -> 34843 bytes
 docs/site/home/index.html                          |  11 +-
 docs/site/home/providers.html                      |  38 +-
 docs/site/home/template/header-footer.html         |   4 +-
 docs/src/reference/gremlin-applications.asciidoc   |  23 +-
 docs/src/reference/gremlin-variants.asciidoc       |  58 +-
 docs/src/reference/the-traversal.asciidoc          |  69 ++
 docs/src/upgrade/release-3.4.x.asciidoc            | 171 +++-
 docs/src/upgrade/release-3.5.x.asciidoc            |  63 +-
 docs/static/images/gremlin-translator.png          | Bin 0 -> 998775 bytes
 .../console/commands/BytecodeCommand.groovy        |  70 +-
 .../console/commands/BytecodeCommand.properties    |   2 +-
 gremlin-console/src/test/python/setup.py           |   9 +-
 .../tinkerpop/gremlin/jsr223/CoreImports.java      |  13 +
 .../tinkerpop/gremlin/process/computer/Memory.java |   6 +-
 .../gremlin/process/traversal/Translator.java      |  16 +-
 .../process/traversal/step/filter/HasStep.java     |  15 +-
 .../traversal/step/filter/TraversalFilterStep.java |  15 +-
 .../traversal/step/map/NoOpBarrierStep.java        |   2 +-
 .../strategy/decoration/EventStrategy.java         |  12 +-
 .../strategy/decoration/SackStrategy.java          |   4 +
 .../AbstractWarningVerificationStrategy.java       |   4 +-
 .../ReservedKeysVerificationStrategy.java          |   9 +-
 .../traversal/translator/GroovyTranslator.java     | 109 +--
 .../traversal/translator/JavascriptTranslator.java |  43 +-
 .../traversal/translator/PythonTranslator.java     |   3 +-
 .../process/traversal/util/BytecodeHelper.java     |  20 +-
 .../process/traversal/util/BytecodeUtil.java       |  46 --
 .../apache/tinkerpop/gremlin/util/TestSupport.java |  69 +-
 .../ReservedKeysVerificationStrategyTest.java      |  18 +-
 .../traversal/translator/GroovyTranslatorTest.java |  68 +-
 .../translator/JavascriptTranslatorTest.java       |   4 +-
 .../ParameterizedGroovyTranslatorTest.java         |  18 +-
 .../traversal/translator/PythonTranslatorTest.java |  14 +-
 .../process/traversal/util/BytecodeHelperTest.java |  97 +++
 .../process/traversal/util/BytecodeUtilTest.java   |  62 --
 gremlin-driver/pom.xml                             |  12 +
 .../tinkerpop/gremlin/driver/Channelizer.java      |  15 +-
 .../apache/tinkerpop/gremlin/driver/Client.java    | 124 +--
 .../apache/tinkerpop/gremlin/driver/Cluster.java   |  36 +-
 .../tinkerpop/gremlin/driver/Connection.java       |  20 +-
 .../tinkerpop/gremlin/driver/ConnectionPool.java   |  53 +-
 .../apache/tinkerpop/gremlin/driver/Handler.java   |   2 +-
 .../apache/tinkerpop/gremlin/driver/ResultSet.java |  26 +-
 .../apache/tinkerpop/gremlin/driver/Settings.java  |  12 +-
 .../driver/exception/ConnectionException.java      |  10 +-
 .../driver/exception/NoHostAvailableException.java |  21 +-
 .../driver/handler/WebSocketClientHandler.java     |  14 +-
 .../driver/remote/DriverRemoteConnection.java      |   4 +-
 .../ser/AbstractGraphSONMessageSerializerV2d0.java |   1 -
 .../gremlin/driver/AbstractResultQueueTest.java    |  11 +-
 .../tinkerpop/gremlin/driver/ClientTest.java       |  82 ++
 .../gremlin/driver/ClusterBuilderTest.java         |   2 +-
 .../tinkerpop/gremlin/driver/ResultSetTest.java    |  38 +-
 .../tinkerpop/gremlin/driver/SettingsTest.java     |   4 +-
 .../groovy/jsr223/ast/GremlinASTChecker.groovy     |  35 +-
 .../gremlin/groovy/loaders/GremlinLoader.groovy    |   4 +-
 .../gremlin/groovy/loaders/ObjectLoader.groovy     |   2 +-
 .../gremlin/groovy/loaders/StepLoader.groovy       |  29 +-
 .../gremlin/groovy/loaders/StrategyLoader.groovy   |  92 +++
 .../gremlin/groovy/loaders/SugarLoader.groovy      |   2 +-
 .../engine/GremlinExecutorOverGraphTest.java       |   1 +
 .../GremlinGroovyScriptEngineOverGraphTest.java    |  16 +
 .../jsr223/GremlinGroovyScriptEngineTest.java      |  31 +
 .../groovy/jsr223/ast/GremlinASTCheckerTest.java   | 205 +++++
 gremlin-javascript/build/generate.groovy           | 126 +++
 gremlin-javascript/pom.xml                         |  18 +
 .../gremlin-javascript/lib/driver/connection.js    |   5 +-
 .../lib/structure/io/type-serializers.js           |  18 +-
 .../test/cucumber/feature-steps.js                 |  32 +-
 .../gremlin-javascript/test/cucumber/gremlin.js    | 678 ++++++++++++++++
 .../test/integration/traversal-test.js             |  35 +-
 .../gremlin-javascript/test/unit/graphson-test.js  |  12 +
 gremlin-python/build/generate.groovy               |   4 +-
 .../gremlin_python/driver/tornado/transport.py     |   7 +-
 gremlin-python/src/main/python/radish/gremlin.py   | 890 ++++++++++-----------
 gremlin-python/src/main/python/setup.py            |  10 +-
 gremlin-server/data/README.asciidoc                |  26 +
 gremlin-server/scripts/empty-sample-secure.groovy  |   2 +-
 gremlin-server/scripts/empty-sample.groovy         |   2 +-
 gremlin-server/scripts/generate-classic.groovy     |   2 +-
 .../scripts/generate-modern-readonly.groovy        |   2 +-
 gremlin-server/scripts/generate-modern.groovy      |   2 +-
 gremlin-server/scripts/load-sample.groovy          |   2 +-
 gremlin-server/scripts/spark.groovy                |   2 +-
 gremlin-server/src/assembly/standalone.xml         |   3 +
 .../gremlin/server/handler/OpSelectorHandler.java  |   4 +-
 .../gremlin/server/util/CheckedGraphManager.java   |  96 +++
 .../gremlin/server/util/DefaultGraphManager.java   |  31 +-
 .../gremlin/server/GremlinDriverIntegrateTest.java |  56 +-
 .../server/GremlinServerAuthIntegrateTest.java     |   4 +-
 .../GremlinServerShutdownIntegrationTest.java      |  42 +-
 .../server/GremlinServerSslIntegrateTest.java      |  11 +-
 ...seScriptForTesting.java => KdcFixtureTest.java} |  23 +-
 .../tinkerpop/gremlin/server/ServerTestHelper.java |   2 +-
 .../server/util/CheckedGraphManagerTest.java       |  82 ++
 ...ate-shouldRebindTraversalSourceVariables.groovy |   4 +-
 .../src/test/scripts/generate-all.groovy           |  21 +-
 gremlin-shaded/pom.xml                             |   3 +-
 .../tinkerpop/gremlin/AbstractGraphProvider.java   |   2 +-
 .../tinkerpop/gremlin/server/KdcFixture.java       |  33 +-
 gremlin-tools/gremlin-benchmark/pom.xml            |  14 +-
 .../jsr223/GremlinGroovyScriptEngineBenchmark.java | 120 +++
 .../src/test/resources/log4j-silent.properties     |   0
 .../src/test/resources/log4j-test.properties       |   0
 gremlin-tools/gremlin-io-test/pom.xml              |  19 +
 neo4j-gremlin/pom.xml                              |   2 +-
 pom.xml                                            |  61 +-
 source-release.xml                                 |   7 +
 111 files changed, 3680 insertions(+), 1073 deletions(-)
 create mode 100644 docs/site/home/img/logos/hugegraph-logo.png
 create mode 100644 docs/static/images/gremlin-translator.png
 delete mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/BytecodeUtil.java
 create mode 100644 gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/BytecodeHelperTest.java
 delete mode 100644 gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/BytecodeUtilTest.java
 copy spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/payload/MessagePayload.java => gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/exception/NoHostAvailableException.java (67%)
 create mode 100644 gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ClientTest.java
 create mode 100644 gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/StrategyLoader.groovy
 create mode 100644 gremlin-javascript/build/generate.groovy
 create mode 100644 gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
 create mode 100644 gremlin-server/data/README.asciidoc
 create mode 100644 gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/CheckedGraphManager.java
 copy gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/{BaseScriptForTesting.java => KdcFixtureTest.java} (50%)
 create mode 100644 gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/util/CheckedGraphManagerTest.java
 create mode 100644 gremlin-tools/gremlin-benchmark/src/main/java/org/apache/tinkerpop/jsr223/GremlinGroovyScriptEngineBenchmark.java
 copy {sparql-gremlin => gremlin-tools/gremlin-benchmark}/src/test/resources/log4j-silent.properties (100%)
 copy gremlin-tools/{gremlin-io-test => gremlin-benchmark}/src/test/resources/log4j-test.properties (100%)


[tinkerpop] 01/01: TINKERPOP-2451 Added JavascriptTranslator for Java

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

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

commit c843051524e6a769d19f94862c8a1eb89a41f41e
Author: Stephen Mallette <st...@amazon.com>
AuthorDate: Wed Oct 28 11:04:02 2020 -0400

    TINKERPOP-2451 Added JavascriptTranslator for Java
    
    Re-factored cucumber tests to match the Python pattern, which uses the Translator to generate the code that is used by the GLV to execute the cucumber tests. In this way, we test the Translator and the GLV natively.
---
 CHANGELOG.asciidoc                                 |   1 +
 docs/src/reference/the-traversal.asciidoc          |  13 +-
 docs/src/upgrade/release-3.5.x.asciidoc            |  23 +
 .../traversal/translator/JavascriptTranslator.java | 369 +++++++++++
 .../translator/JavascriptTranslatorTest.java       | 182 ++++++
 gremlin-javascript/build/generate.groovy           | 126 ++++
 gremlin-javascript/pom.xml                         |  18 +
 .../test/cucumber/feature-steps.js                 |  28 +-
 .../gremlin-javascript/test/cucumber/gremlin.js    | 678 +++++++++++++++++++++
 gremlin-python/build/generate.groovy               |   4 +-
 10 files changed, 1418 insertions(+), 24 deletions(-)

diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index c599a59..19d8846 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -51,6 +51,7 @@ This release also includes changes from <<release-3-4-3, 3.4.3>>.
 * Configured GraphBinary as the default binary serialization format for the Java Driver.
 * Configured GraphSON 3.0 as the default text serialization format when no serializer can be determined.
 * Configured GraphSON 3.0 as the default setting for the `GraphSONMapper`.
+* Added `JavascriptTranslator` for Java.
 * Fixed bug in `PythonTranslator` for processing `TraversalStrategy` instances in GraphBinary.
 * Fixed bug in bytecode `Bindings` where calling `of()` prior to calling a child traversal in the same parent would cause the initial binding to be lost.
 * Bumped to tornado 6.1 for gremlinpython.
diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc
index ee0662c..ee7a8f4 100644
--- a/docs/src/reference/the-traversal.asciidoc
+++ b/docs/src/reference/the-traversal.asciidoc
@@ -4241,8 +4241,8 @@ The following translators are available:
 [width="100%",cols="<,^,^,^,^,^",options="header"]
 |=========================================================
 | |Java |Groovy |Javascript |.NET |Python
-|*Java* |- |X | | |X
-|*Groovy* | |- | | |X
+|*Java* |- |X |X | |X
+|*Groovy* | |X |X | |X
 |*Javascript* | |X |- | |
 |*.NET* | | | |- |
 |*Python*  | | | | |-
@@ -4257,6 +4257,7 @@ an interface perspective. API changes may occur in the near future.
 ----
 // gremlin-core module
 import org.apache.tinkerpop.gremlin.process.traversal.translator.*;
+
 GraphTraversalSource g = ...;
 Traversal<Vertex,Integer> t = g.V().has("person","name","marko").
                                 where(in("knows")).
@@ -4264,12 +4265,16 @@ Traversal<Vertex,Integer> t = g.V().has("person","name","marko").
                                 map(Lambda.Function("it.get() + 1");
 
 Translator.ScriptTranslator groovyTranslator = GroovyTranslator.of("g");
-System.out.println(groovyTranslator.translate(t);
+System.out.println(groovyTranslator.translate(t).getScript());
 // OUTPUT: g.V().has("person","name","marko").where(__.in("knows")).values("age").map({it.get() + 1})
 
 Translator.ScriptTranslator pythonTranslator = PythonTranslator.of("g");
-System.out.println(pythonTranslator.translate(t);
+System.out.println(pythonTranslator.translate(t).getScript());
 // OUTPUT: g.V().has('person','name','marko').where(__.in_('knows')).age.map(lambda: "it.get() + 1")
+
+Translator.ScriptTranslator javascriptTranslator = JavascriptTranslator.of("g");
+System.out.println(javascriptTranslator.translate(t).getScript());
+// OUTPUT: g.V().has("person","name","marko").where(__.in_("knows")).values("age").map(() => "it.get() + 1")
 ----
 [source,javascript]
 ----
diff --git a/docs/src/upgrade/release-3.5.x.asciidoc b/docs/src/upgrade/release-3.5.x.asciidoc
index bfe7405..751fef5 100644
--- a/docs/src/upgrade/release-3.5.x.asciidoc
+++ b/docs/src/upgrade/release-3.5.x.asciidoc
@@ -98,6 +98,29 @@ link:https://github.com/apache/tinkerpop/blob/3.4.8/pom.xml[pom.xml].
 
 See: link:https://issues.apache.org/jira/browse/TINKERPOP-2460[TINKERPOP-2460]
 
+==== JavascriptTranslator
+
+Introduced a `JavascriptTranslator` for Java, which is in `gremlin-core` with the other language translators. It
+generates a Javascript representation of Gremlin from bytecode.
+
+[source,java]
+----
+// gremlin-core module
+import org.apache.tinkerpop.gremlin.process.traversal.translator.JavascriptTranslator;
+
+GraphTraversalSource g = ...;
+Traversal<Vertex,Integer> t = g.V().has("person","name","marko").
+                                where(in("knows")).
+                                values("age").
+                                map(Lambda.Function("it.get() + 1");
+
+Translator.ScriptTranslator javascriptTranslator = JavascriptTranslator.of("g");
+System.out.println(javascriptTranslator.translate(t).getScript());
+// OUTPUT: g.V().has("person","name","marko").where(__.in_("knows")).values("age").map(() => "it.get() + 1")
+----
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-2451[TINKERPOP-2451]
+
 ==== Gryo Usage
 
 Since the first release of TinkerPop 3.x, Gryo has been the default serialization format for Gremlin Server and
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/translator/JavascriptTranslator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/translator/JavascriptTranslator.java
new file mode 100644
index 0000000..b612c0c
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/translator/JavascriptTranslator.java
@@ -0,0 +1,369 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.process.traversal.translator;
+
+import org.apache.commons.configuration2.ConfigurationConverter;
+import org.apache.commons.text.StringEscapeUtils;
+import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
+import org.apache.tinkerpop.gremlin.process.traversal.SackFunctions;
+import org.apache.tinkerpop.gremlin.process.traversal.Script;
+import org.apache.tinkerpop.gremlin.process.traversal.TextP;
+import org.apache.tinkerpop.gremlin.process.traversal.Translator;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.TraversalStrategyProxy;
+import org.apache.tinkerpop.gremlin.process.traversal.util.ConnectiveP;
+import org.apache.tinkerpop.gremlin.process.traversal.util.OrP;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.util.function.Lambda;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+import java.util.function.BinaryOperator;
+import java.util.function.Supplier;
+import java.util.function.UnaryOperator;
+
+/**
+ * Converts bytecode to a Javascript string of Gremlin.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public final class JavascriptTranslator implements Translator.ScriptTranslator {
+
+    private final String traversalSource;
+    private final TypeTranslator typeTranslator;
+
+    private JavascriptTranslator(final String traversalSource, final TypeTranslator typeTranslator) {
+        this.traversalSource = traversalSource;
+        this.typeTranslator = typeTranslator;
+    }
+
+    /**
+     * Creates the translator with a {@code false} argument to {@code withParameters} using
+     * {@link #of(String, boolean)}.
+     */
+    public static JavascriptTranslator of(final String traversalSource) {
+        return of(traversalSource, false);
+    }
+
+    /**
+     * Creates the translator with the {@link DefaultTypeTranslator} passing the {@code withParameters} option to it
+     * which will handle type translation in a fashion that should typically increase cache hits and reduce
+     * compilation times if enabled at the sacrifice to rewriting of the script that could reduce readability.
+     */
+    public static JavascriptTranslator of(final String traversalSource, final boolean withParameters) {
+        return of(traversalSource, new DefaultTypeTranslator(withParameters));
+    }
+
+    /**
+     * Creates the translator with a custom {@link TypeTranslator} instance.
+     */
+    public static JavascriptTranslator of(final String traversalSource, final TypeTranslator typeTranslator) {
+        return new JavascriptTranslator(traversalSource, typeTranslator);
+    }
+
+    @Override
+    public Script translate(final Bytecode bytecode) {
+        return typeTranslator.apply(traversalSource, bytecode);
+    }
+
+    @Override
+    public String getTargetLanguage() {
+        return "gremlin-javascript";
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.translatorString(this);
+    }
+
+    @Override
+    public String getTraversalSource() {
+        return this.traversalSource;
+    }
+
+    /**
+     * Performs standard type translation for the TinkerPop types to Javascript.
+     */
+    public static class DefaultTypeTranslator extends AbstractTypeTranslator {
+
+        public DefaultTypeTranslator(final boolean withParameters) {
+            super(withParameters);
+        }
+
+        @Override
+        protected String getNullSyntax() {
+            return "null";
+        }
+
+        @Override
+        protected String getSyntax(final String o) {
+            return (o.contains("\"") ? "\"\"\"" + StringEscapeUtils.escapeJava(o) + "\"\"\"" : "\"" + StringEscapeUtils.escapeJava(o) + "\"")
+                    .replace("$", "\\$");
+        }
+
+        @Override
+        protected String getSyntax(final Boolean o) {
+            return o.toString();
+        }
+
+        @Override
+        protected String getSyntax(final Date o) {
+            return "new Date(" + o.getTime() + ")";
+        }
+
+        @Override
+        protected String getSyntax(final Timestamp o) {
+            return "new Date(" + o.getTime() + ")";
+        }
+
+        @Override
+        protected String getSyntax(final UUID o) {
+            return "'" + o.toString() + "'";
+        }
+
+        @Override
+        protected String getSyntax(final Lambda o) {
+            return "() => \"" + StringEscapeUtils.escapeEcmaScript(o.getLambdaScript().trim()) + "\"";
+        }
+
+        @Override
+        protected String getSyntax(final SackFunctions.Barrier o) {
+            return "Barrier." + o.toString();
+        }
+
+        @Override
+        protected String getSyntax(final VertexProperty.Cardinality o) {
+            return "Cardinality." + o.toString();
+        }
+
+        @Override
+        protected String getSyntax(final TraversalOptionParent.Pick o) {
+            return "Pick." + o.toString();
+        }
+
+        @Override
+        protected String getSyntax(final Number o) {
+            return o.toString();
+        }
+
+        @Override
+        protected Script produceScript(final Set<?> o) {
+            return produceScript(new ArrayList<>(o));
+        }
+
+        @Override
+        protected Script produceScript(final List<?> o) {
+            final Iterator<?> iterator = ((List<?>) o).iterator();
+            script.append("[");
+
+            while (iterator.hasNext()) {
+                final Object nextItem = iterator.next();
+                convertToScript(nextItem);
+                if (iterator.hasNext())
+                    script.append(",").append(" ");
+            }
+
+            return script.append("]");
+        }
+
+        @Override
+        protected Script produceScript(final Map<?, ?> o) {
+            script.append("new Map([");
+            final Iterator<? extends Map.Entry<?, ?>> itty = ((Map<?, ?>) o).entrySet().iterator();
+            while (itty.hasNext()) {
+                final Map.Entry<?,?> entry = itty.next();
+                script.append("[");
+                convertToScript(entry.getKey());
+                script.append(",");
+                convertToScript(entry.getValue());
+                script.append("]");
+                if (itty.hasNext())
+                    script.append(",");
+            }
+            return script.append("])");
+        }
+
+        @Override
+        protected Script produceScript(final Class<?> o) {
+            return script.append(o.getCanonicalName());
+        }
+
+        @Override
+        protected Script produceScript(final Enum<?> o) {
+            return script.append(o.getDeclaringClass().getSimpleName() + "." + o.toString());
+        }
+
+        @Override
+        protected Script produceScript(final Vertex o) {
+            script.append("new Vertex(");
+            convertToScript(o.id());
+            script.append(",");
+            convertToScript(o.label());
+            return script.append(", null)");
+        }
+
+        @Override
+        protected Script produceScript(final Edge o) {
+            script.append("new Edge(");
+            convertToScript(o.id());
+            script.append(", Vertex(");
+            convertToScript(o.outVertex().id());
+            script.append(",");
+            convertToScript(o.outVertex().label());
+            script.append(", null),");
+            convertToScript(o.label());
+            script.append(", Vertex(");
+            convertToScript(o.inVertex().id());
+            script.append(",");
+            convertToScript(o.inVertex().label());
+            return script.append(",null),null)");
+        }
+
+        @Override
+        protected Script produceScript(final VertexProperty<?> o) {
+            script.append("new Property(");
+            convertToScript(o.id());
+            script.append(",");
+            convertToScript(o.label());
+            script.append(",");
+            convertToScript(o.value());
+            script.append(",");
+            return script.append("null)");
+        }
+
+        @Override
+        protected Script produceScript(final TraversalStrategyProxy<?> o) {
+            if (o.getConfiguration().isEmpty()) {
+                return script.append("new " + o.getStrategyClass().getSimpleName() + "()");
+            } else {
+                script.append("new " + o.getStrategyClass().getSimpleName() + "(");
+                convertToScript(ConfigurationConverter.getMap(o.getConfiguration()));
+                return script.append(")");
+            }
+        }
+
+        @Override
+        protected Script produceScript(final String traversalSource, final Bytecode o) {
+            script.append(traversalSource);
+            for (final Bytecode.Instruction instruction : o.getInstructions()) {
+                final String methodName = instruction.getOperator();
+                if (0 == instruction.getArguments().length) {
+                    script.append(".").append(resolveSymbol(methodName)).append("()");
+                } else {
+                    script.append(".").append(resolveSymbol(methodName)).append("(");
+
+                    // have to special case withSack() for Groovy because UnaryOperator and BinaryOperator signatures
+                    // make it impossible for the interpreter to figure out which function to call. specifically we need
+                    // to discern between:
+                    //     withSack(A initialValue, UnaryOperator<A> splitOperator)
+                    //     withSack(A initialValue, BinaryOperator<A> splitOperator)
+                    // and:
+                    //     withSack(Supplier<A> initialValue, UnaryOperator<A> mergeOperator)
+                    //     withSack(Supplier<A> initialValue, BinaryOperator<A> mergeOperator)
+                    if (methodName.equals(TraversalSource.Symbols.withSack) &&
+                            instruction.getArguments().length == 2 && instruction.getArguments()[1] instanceof Lambda) {
+                        final String castFirstArgTo = instruction.getArguments()[0] instanceof Lambda ?
+                                Supplier.class.getName() : "";
+                        final Lambda secondArg = (Lambda) instruction.getArguments()[1];
+                        final String castSecondArgTo = secondArg.getLambdaArguments() == 1 ? UnaryOperator.class.getName() :
+                                BinaryOperator.class.getName();
+                        if (!castFirstArgTo.isEmpty())
+                            script.append(String.format("(%s) ", castFirstArgTo));
+                        convertToScript(instruction.getArguments()[0]);
+                        script.append(", (").append(castSecondArgTo).append(") ");
+                        convertToScript(instruction.getArguments()[1]);
+                        script.append(",");
+                    } else {
+                        for (final Object object : instruction.getArguments()) {
+                            convertToScript(object);
+                            script.append(",");
+                        }
+                    }
+                    script.setCharAtEnd(')');
+                }
+            }
+            return script;
+        }
+
+        @Override
+        protected Script produceScript(final P<?> p) {
+            if (p instanceof TextP) {
+                script.append("TextP.").append(p.getBiPredicate().toString()).append("(");
+                convertToScript(p.getValue());
+            } else if (p instanceof ConnectiveP) {
+                final List<P<?>> list = ((ConnectiveP) p).getPredicates();
+                for (int i = 0; i < list.size(); i++) {
+                    produceScript(list.get(i));
+                    if (i < list.size() - 1) {
+                        script.append(p instanceof OrP ? ".or(" : ".and(");
+                    }
+                }
+            } else {
+                script.append("P.").append(p.getBiPredicate().toString()).append("(");
+                convertToScript(p.getValue());
+            }
+            script.append(")");
+            return script;
+        }
+
+        protected String resolveSymbol(final String methodName) {
+            return SymbolHelper.toJavascript(methodName);
+        }
+    }
+
+    static final class SymbolHelper {
+
+        private final static Map<String, String> TO_JS_MAP = new HashMap<>();
+        private final static Map<String, String> FROM_JS_MAP = new HashMap<>();
+
+        static {
+            TO_JS_MAP.put("from", "from_");
+            TO_JS_MAP.put("in", "in_");
+            TO_JS_MAP.put("with", "with_");
+            //
+            TO_JS_MAP.forEach((k, v) -> FROM_JS_MAP.put(v, k));
+        }
+
+        private SymbolHelper() {
+            // static methods only, do not instantiate
+        }
+
+        public static String toJavascript(final String symbol) {
+            return TO_JS_MAP.getOrDefault(symbol, symbol);
+        }
+
+        public static String toJava(final String symbol) {
+            return FROM_JS_MAP.getOrDefault(symbol, symbol);
+        }
+
+    }
+}
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/translator/JavascriptTranslatorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/translator/JavascriptTranslatorTest.java
new file mode 100644
index 0000000..46ed2e3
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/translator/JavascriptTranslatorTest.java
@@ -0,0 +1,182 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.process.traversal.translator;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Order;
+import org.apache.tinkerpop.gremlin.process.traversal.Pop;
+import org.apache.tinkerpop.gremlin.process.traversal.Scope;
+import org.apache.tinkerpop.gremlin.process.traversal.Translator;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy;
+import org.apache.tinkerpop.gremlin.structure.Column;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
+import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
+import org.junit.Test;
+
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.UUID;
+
+import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.hasLabel;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class JavascriptTranslatorTest {
+    private static final GraphTraversalSource g = traversal().withEmbedded(EmptyGraph.instance());
+    private static final Translator.ScriptTranslator translator = JavascriptTranslator.of("g");
+
+    @Test
+    public void shouldTranslateStrategies() throws Exception {
+        assertEquals("g.withStrategies(new ReadOnlyStrategy()," +
+                        "new SubgraphStrategy(new Map([[\"checkAdjacentVertices\",false],[\"vertices\",__.hasLabel(\"person\")]]))).V().has(\"name\")",
+                translator.translate(g.withStrategies(ReadOnlyStrategy.instance(),
+                        SubgraphStrategy.build().checkAdjacentVertices(false).vertices(hasLabel("person")).create()).
+                        V().has("name").asAdmin().getBytecode()).getScript());
+    }
+
+    @Test
+    public void shouldTranslateMaps() {
+        final String script = translator.translate(g.V().id().is(new LinkedHashMap<Object,Object>() {{
+            put(3, "32");
+            put(Arrays.asList(1, 2, 3.1d), 4);
+        }}).asAdmin().getBytecode()).getScript();
+        assertEquals("g.V().id().is(new Map([[3,\"32\"],[[1, 2, 3.1],4]]))", script);
+    }
+
+    @Test
+    public void shouldTranslateDate() {
+        final Calendar c = Calendar.getInstance();
+        c.set(1975, Calendar.SEPTEMBER, 7);
+        final Date d = c.getTime();
+        assertTranslation(String.format("new Date(%s)", d.getTime()), d);
+    }
+
+    @Test
+    public void shouldTranslateUuid() {
+        final UUID uuid = UUID.fromString("ffffffff-fd49-1e4b-0000-00000d4b8a1d");
+        assertTranslation(String.format("'%s'", uuid), uuid);
+    }
+
+    @Test
+    public void shouldTranslateColumn() {
+        assertTranslation("Column.keys", Column.keys);
+    }
+
+    @Test
+    public void shouldTranslateDirection() {
+        assertTranslation("Direction.BOTH", Direction.BOTH);
+    }
+
+    @Test
+    public void shouldTranslateOrder() {
+        assertTranslation("Order.desc", Order.desc);
+    }
+
+    @Test
+    public void shouldTranslatePop() {
+        assertTranslation("Pop.last", Pop.last);
+    }
+
+    @Test
+    public void shouldTranslateScope() {
+        assertTranslation("Scope.local", Scope.local);
+    }
+
+    @Test
+    public void shouldHaveValidToString() {
+        assertEquals("translator[h:gremlin-javascript]", JavascriptTranslator.of("h").toString());
+    }
+
+    @Test
+    public void shouldEscapeStrings() {
+        final String script = translator.translate(g.addV("customer")
+                .property("customer_id", 501L)
+                .property("name", "Foo\u0020Bar")
+                .property("age", 25)
+                .property("special", "`~!@#$%^&*()-_=+[{]}\\|;:'\",<.>/?")
+                .asAdmin().getBytecode()).getScript();
+
+        assertEquals("g.addV(\"customer\")" +
+                        ".property(\"customer_id\",501)" +
+                        ".property(\"name\",\"Foo Bar\")" +
+                        ".property(\"age\",25)" +
+                        ".property(\"special\",\"\"\"`~!@#\\$%^&*()-_=+[{]}\\\\|;:'\\\",<.>/?\"\"\")",
+                script);
+    }
+
+    @Test
+    public void shouldTranslateVertexAndEdge() {
+        final Object id1 = "customer:10:foo\u0020bar\u0020\u0024100#90"; // customer:10:foo bar $100#90
+        final Vertex vertex1 = DetachedVertex.build().setLabel("customer").setId(id1)
+                .create();
+        final String script1 = translator.translate(g.inject(vertex1).asAdmin().getBytecode()).getScript();
+        assertEquals("g.inject(new Vertex(" +
+                        "\"customer:10:foo bar \\$100#90\"," +
+                        "\"customer\", null))",
+                script1);
+
+        final Object id2 = "user:20:foo\\u0020bar\\u005c\\u0022mr\\u005c\\u0022\\u00241000#50"; // user:20:foo\u0020bar\u005c\u0022mr\u005c\u0022\u00241000#50
+        final Vertex vertex2 = DetachedVertex.build().setLabel("user").setId(id2)
+                .create();
+        final String script2 = translator.translate(g.inject(vertex2).asAdmin().getBytecode()).getScript();
+        assertEquals("g.inject(new Vertex(" +
+                        "\"user:20:foo\\\\u0020bar\\\\u005c\\\\u0022mr\\\\u005c\\\\u0022\\\\u00241000#50\"," +
+                        "\"user\", null))",
+                script2);
+
+        final Object id3 = "knows:30:foo\u0020bar\u0020\u0024100:\\u0020\\u0024500#70";
+        final Edge edge = DetachedEdge.build().setLabel("knows").setId(id3)
+                .setOutV((DetachedVertex) vertex1)
+                .setInV((DetachedVertex) vertex2)
+                .create();
+        final String script3 = translator.translate(g.inject(edge).asAdmin().getBytecode()).getScript();
+        assertEquals("g.inject(" +
+                        "new Edge(\"knows:30:foo bar \\$100:\\\\u0020\\\\u0024500#70\", " +
+                        "Vertex(\"customer:10:foo bar \\$100#90\",\"customer\", null)," +
+                        "\"knows\", " +
+                        "Vertex(\"user:20:foo\\\\u0020bar\\\\u005c\\\\u0022mr\\\\u005c\\\\u0022\\\\u00241000#50\",\"user\",null)," +
+                        "null))",
+                script3);
+
+        final String script4 = translator.translate(
+                g.addE("knows").from(vertex1).to(vertex2).property("when", "2018/09/21")
+                        .asAdmin().getBytecode()).getScript();
+        assertEquals("g.addE(\"knows\")" +
+                        ".from_(new Vertex(\"customer:10:foo bar \\$100#90\",\"customer\", null))" +
+                        ".to(new Vertex(\"user:20:foo\\\\u0020bar\\\\u005c\\\\u0022mr\\\\u005c\\\\u0022\\\\u00241000#50\",\"user\", null))" +
+                        ".property(\"when\",\"2018/09/21\")",
+                script4);
+    }
+
+    private void assertTranslation(final String expectedTranslation, final Object... objs) {
+        final String script = translator.translate(g.inject(objs).asAdmin().getBytecode()).getScript();
+        assertEquals(String.format("g.inject(%s)", expectedTranslation), script);
+    }
+}
diff --git a/gremlin-javascript/build/generate.groovy b/gremlin-javascript/build/generate.groovy
new file mode 100644
index 0000000..7a374c0
--- /dev/null
+++ b/gremlin-javascript/build/generate.groovy
@@ -0,0 +1,126 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph
+import org.apache.tinkerpop.gremlin.process.traversal.translator.JavascriptTranslator
+import org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine
+import org.apache.tinkerpop.gremlin.groovy.jsr223.ast.VarAsBindingASTTransformation
+import org.apache.tinkerpop.gremlin.groovy.jsr223.ast.RepeatASTTransformationCustomizer
+import org.apache.tinkerpop.gremlin.groovy.jsr223.GroovyCustomizer
+import org.codehaus.groovy.control.customizers.CompilationCustomizer
+import org.apache.tinkerpop.gremlin.features.FeatureReader
+
+import javax.script.SimpleBindings
+
+import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal
+
+// file is overwritten on each generation
+radishGremlinFile = new File("${projectBaseDir}/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js")
+
+// assumes globally unique scenario names for keys with list of Gremlin traversals as they appear
+gremlins = FeatureReader.parse("${projectBaseDir}")
+
+gremlinGroovyScriptEngine = new GremlinGroovyScriptEngine(new GroovyCustomizer() {
+    public CompilationCustomizer create() {
+        return new RepeatASTTransformationCustomizer(new VarAsBindingASTTransformation())
+    }
+})
+translator = JavascriptTranslator.of('g')
+g = traversal().withGraph(EmptyGraph.instance())
+bindings = new SimpleBindings()
+bindings.put('g', g)
+
+radishGremlinFile.withWriter('UTF-8') { Writer writer ->
+    writer.writeLine('/*\n' +
+            '* Licensed to the Apache Software Foundation (ASF) under one\n' +
+            '* or more contributor license agreements.  See the NOTICE file\n' +
+            '* distributed with this work for additional information\n' +
+            '* regarding copyright ownership.  The ASF licenses this file\n' +
+            '* to you under the Apache License, Version 2.0 (the\n' +
+            '* "License"); you may not use this file except in compliance\n' +
+            '* with the License.  You may obtain a copy of the License at\n' +
+            '* \n' +
+            '* http://www.apache.org/licenses/LICENSE-2.0\n' +
+            '* \n' +
+            '* Unless required by applicable law or agreed to in writing,\n' +
+            '* software distributed under the License is distributed on an\n' +
+            '* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n' +
+            '* KIND, either express or implied.  See the License for the\n' +
+            '* specific language governing permissions and limitations\n' +
+            '* under the License.\n' +
+            '*/\n')
+
+    writer.writeLine("\n\n//********************************************************************************")
+    writer.writeLine("//* Do NOT edit this file directly - generated by build/generate.groovy")
+    writer.writeLine("//********************************************************************************\n\n")
+
+    writer.writeLine(
+                    'const graphTraversalModule = require(\'../../lib/process/graph-traversal\');\n' +
+                    'const traversalModule = require(\'../../lib/process/traversal\');\n' +
+                    'const { TraversalStrategies, VertexProgramStrategy, OptionsStrategy } = require(\'../../lib/process/traversal-strategy\');\n' +
+                    'const __ = graphTraversalModule.statics;\n' +
+                    'const Barrier = traversalModule.barrier\n' +
+                    'const Cardinality = traversalModule.cardinality\n' +
+                    'const Column = traversalModule.column\n' +
+                    'const Direction = {\n' +
+                    '    BOTH: traversalModule.direction.both,\n' +
+                    '    IN: traversalModule.direction.in,\n' +
+                    '    OUT: traversalModule.direction.out\n' +
+                    '};\n' +
+                    'const P = traversalModule.P;\n' +
+                    'const Pick = traversalModule.pick\n' +
+                    'const Pop = traversalModule.pop\n' +
+                    'const Order = traversalModule.order\n' +
+                    'const Operator = traversalModule.operator\n' +
+                    'const Scope = traversalModule.scope\n' +
+                    'const T = traversalModule.t\n' +
+                    'const TextP = traversalModule.TextP\n' +
+                    'const WithOptions = traversalModule.withOptions\n')
+
+    writer.writeLine('const gremlins = {')
+    gremlins.each { k,v ->
+        writer.write("    ")
+        writer.write(k)
+        writer.write(": [")
+        def collected = v.collect{
+            def t = gremlinGroovyScriptEngine.eval(it, bindings)
+            [t, t.bytecode.bindings.keySet()]
+        }
+        def uniqueBindings = collected.collect{it[1]}.flatten().unique()
+        def gremlinItty = collected.iterator()
+        while (gremlinItty.hasNext()) {
+            def t = gremlinItty.next()[0]
+            writer.write("function({g")
+            if (!uniqueBindings.isEmpty()) {
+                writer.write(", ")
+                writer.write(uniqueBindings.join(", "))
+            }
+            writer.write("}) { return ")
+            writer.write(translator.translate(t.bytecode).script)
+            writer.write(" }")
+            if (gremlinItty.hasNext()) writer.write(', ')
+        }
+        writer.writeLine('], ')
+    }
+    writer.writeLine('}\n')
+
+    writer.writeLine('exports.gremlin = gremlins')
+}
+
+
diff --git a/gremlin-javascript/pom.xml b/gremlin-javascript/pom.xml
index 2e8b355..a504b80 100644
--- a/gremlin-javascript/pom.xml
+++ b/gremlin-javascript/pom.xml
@@ -80,6 +80,24 @@ limitations under the License.
                 </dependencies>
                 <executions>
                     <execution>
+                        <id>generate-radish-support</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>execute</goal>
+                        </goals>
+                        <configuration>
+                            <properties>
+                                <property>
+                                    <name>projectBaseDir</name>
+                                    <value>${project.basedir}/../</value>
+                                </property>
+                            </properties>
+                            <scripts>
+                                <script>${project.basedir}/build/generate.groovy</script>
+                            </scripts>
+                        </configuration>
+                    </execution>
+                    <execution>
                         <id>update-version</id>
                         <phase>generate-sources</phase>
                         <goals>
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
index 62f2bf5..07be9f9 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
@@ -23,9 +23,9 @@
 'use strict';
 
 const {Given, Then, When} = require('cucumber');
-const vm = require('vm');
 const expect = require('chai').expect;
 const util = require('util');
+const gremlin = require('./gremlin').gremlin;
 const graphModule = require('../../lib/structure/graph');
 const graphTraversalModule = require('../../lib/process/graph-traversal');
 const traversalModule = require('../../lib/process/traversal');
@@ -86,14 +86,18 @@ Given(/^the (.+) graph$/, function (graphName) {
 });
 
 Given('the graph initializer of', function (traversalText) {
-  const traversal = vm.runInNewContext(translate(traversalText), getSandbox(this.g, this.parameters));
+  const p = Object.assign({}, this.parameters);
+  p.g = this.g;
+  const traversal = gremlin[this.scenario].shift()(p);
   return traversal.toList();
 });
 
 Given('an unsupported test', () => {});
 
 Given('the traversal of', function (traversalText) {
-  this.traversal = vm.runInNewContext(translate(traversalText), getSandbox(this.g, this.parameters));
+  const p = Object.assign({}, this.parameters);
+  p.g = this.g;
+  this.traversal = gremlin[this.scenario].shift()(p);
 });
 
 Given(/^using the parameter (.+) of P\.(.+)\("(.+)"\)$/, function (paramName, pval, stringValue) {
@@ -155,7 +159,9 @@ Then(/^the result should be (\w+)$/, function assertResult(characterizedAs, resu
 });
 
 Then(/^the graph should return (\d+) for count of "(.+)"$/, function (stringCount, traversalText) {
-  const traversal = vm.runInNewContext(translate(traversalText), getSandbox(this.g, this.parameters));
+  const p = Object.assign({}, this.parameters);
+  p.g = this.g;
+  const traversal = gremlin[this.scenario].shift()(p);
   return traversal.toList().then(list => {
     expect(list).to.have.lengthOf(parseInt(stringCount, 10));
   });
@@ -211,20 +217,6 @@ function getSandbox(g, parameters) {
   return sandbox;
 }
 
-function translate(traversalText) {
-  // clean up trailing period/spaces so that it's easier to match newline with() to convert to with_() below
-  traversalText = traversalText.replace(/\)\.\s*/g, ').');
-  // Remove escaped chars
-  traversalText = traversalText.replace(/\\"/g, '"');
-  // Replace long suffix with Long instance
-  traversalText = traversalText.replace(/\b(\d+)l\b/gi, 'toLong($1)');
-  // Change according to naming convention
-  traversalText = traversalText.replace(/\.in\(/g, '.in_(');
-  traversalText = traversalText.replace(/\.from\(/g, '.from_(');
-  traversalText = traversalText.replace(/\.with\(/g, '.with_(');
-  return traversalText;
-}
-
 function parseRow(row) {
   return parseValue.call(this, row[0]);
 }
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
new file mode 100644
index 0000000..b69bb3b
--- /dev/null
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
@@ -0,0 +1,678 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+* 
+* http://www.apache.org/licenses/LICENSE-2.0
+* 
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied.  See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+
+
+//********************************************************************************
+//* Do NOT edit this file directly - generated by build/generate.groovy
+//********************************************************************************
+
+
+const graphTraversalModule = require('../../lib/process/graph-traversal');
+const traversalModule = require('../../lib/process/traversal');
+const { TraversalStrategies, VertexProgramStrategy, OptionsStrategy } = require('../../lib/process/traversal-strategy');
+const __ = graphTraversalModule.statics;
+const Barrier = traversalModule.barrier
+const Cardinality = traversalModule.cardinality
+const Column = traversalModule.column
+const Direction = {
+    BOTH: traversalModule.direction.both,
+    IN: traversalModule.direction.in,
+    OUT: traversalModule.direction.out
+};
+const P = traversalModule.P;
+const Pick = traversalModule.pick
+const Pop = traversalModule.pop
+const Order = traversalModule.order
+const Operator = traversalModule.operator
+const Scope = traversalModule.scope
+const T = traversalModule.t
+const TextP = traversalModule.TextP
+const WithOptions = traversalModule.withOptions
+
+const gremlins = {
+    g_V_branchXlabel_eq_person__a_bX_optionXa__ageX_optionXb__langX_optionXb__nameX: [function({g, l1}) { return g.V().branch(l1).option("a",__.values("age")).option("b",__.values("lang")).option("b",__.values("name")) }], 
+    g_V_branchXlabel_isXpersonX_countX_optionX1__ageX_optionX0__langX_optionX0__nameX: [function({g, zero, one}) { return g.V().branch(__.label().is("person").count()).option(one,__.values("age")).option(zero,__.values("lang")).option(zero,__.values("name")) }], 
+    g_V_branchXlabel_isXpersonX_countX_optionX1__ageX_optionX0__langX_optionX0__nameX_optionXany__labelX: [function({g, zero, one}) { return g.V().branch(__.label().is("person").count()).option(one,__.values("age")).option(zero,__.values("lang")).option(zero,__.values("name")).option(Pick.any,__.label()) }], 
+    g_V_branchXageX_optionXltX30X__youngX_optionXgtX30X__oldX_optionXnone__on_the_edgeX: [function({g}) { return g.V().hasLabel("person").branch(__.values("age")).option(P.lt(30),__.constant("young")).option(P.gt(30),__.constant("old")).option(Pick.none,__.constant("on the edge")) }], 
+    g_V_branchXidentityX_optionXhasLabelXsoftwareX__inXcreatedX_name_order_foldX_optionXhasXname_vadasX__ageX_optionXneqX123X__bothE_countX: [function({g}) { return g.V().branch(__.identity()).option(__.hasLabel("software"),__.in_("created").values("name").order().fold()).option(__.has("name","vadas"),__.values("age")).option(P.neq(123),__.bothE().count()) }], 
+    g_V_chooseXout_countX_optionX2L_nameX_optionX3L_ageX: [function({g, two, three}) { return g.V().choose(__.out().count()).option(two,__.values("name")).option(three,__.values("age")) }], 
+    g_V_chooseXlabel_eqXpersonX__outXknowsX__inXcreatedXX_name: [function({g, l1}) { return g.V().choose(l1,__.out("knows"),__.in_("created")).values("name") }], 
+    g_V_chooseXhasLabelXpersonX_and_outXcreatedX__outXknowsX__identityX_name: [function({g}) { return g.V().choose(__.hasLabel("person").and().out("created"),__.out("knows"),__.identity()).values("name") }], 
+    g_V_chooseXlabelX_optionXblah__outXknowsXX_optionXbleep__outXcreatedXX_optionXnone__identityX_name: [function({g}) { return g.V().choose(__.label()).option("blah",__.out("knows")).option("bleep",__.out("created")).option(Pick.none,__.identity()).values("name") }], 
+    g_V_chooseXoutXknowsX_count_isXgtX0XX__outXknowsXX_name: [function({g}) { return g.V().choose(__.out("knows").count().is(P.gt(0)),__.out("knows")).values("name") }], 
+    g_V_hasLabelXpersonX_asXp1X_chooseXoutEXknowsX__outXknowsXX_asXp2X_selectXp1_p2X_byXnameX: [function({g}) { return g.V().hasLabel("person").as("p1").choose(__.outE("knows"),__.out("knows")).as("p2").select("p1","p2").by("name") }], 
+    g_V_hasLabelXpersonX_chooseXageX__optionX27L__constantXyoungXX_optionXnone__constantXoldXX_groupCount: [function({g, d27}) { return g.V().hasLabel("person").choose(__.values("age")).option(d27,__.constant("young")).option(Pick.none,__.constant("old")).groupCount() }], 
+    g_injectX1X_chooseXisX1X__constantX10Xfold__foldX: [function({g, d10, d1}) { return g.inject(d1).choose(__.is(d1),__.constant(d10).fold(),__.fold()) }], 
+    g_injectX2X_chooseXisX1X__constantX10Xfold__foldX: [function({g, d10, d1, d2}) { return g.inject(d2).choose(__.is(d1),__.constant(d10).fold(),__.fold()) }], 
+    g_V_localXpropertiesXlocationX_order_byXvalueX_limitX2XX_value: [function({g}) { return g.V().local(__.properties("location").order().by(T.value,Order.asc).range(0,2)).value() }], 
+    g_V_hasXlabel_personX_asXaX_localXoutXcreatedX_asXbXX_selectXa_bX_byXnameX_byXidX: [function({g}) { return g.V().has(T.label,"person").as("a").local(__.out("created").as("b")).select("a","b").by("name").by(T.id) }], 
+    g_V_localXoutE_countX: [function({g}) { return g.V().local(__.outE().count()) }], 
+    g_VX1X_localXoutEXknowsX_limitX1XX_inV_name: [function({g, v1Id}) { return g.V(v1Id).local(__.outE("knows").limit(1)).inV().values("name") }], 
+    g_V_localXbothEXcreatedX_limitX1XX_otherV_name: [function({g}) { return g.V().local(__.bothE("created").limit(1)).otherV().values("name") }], 
+    g_VX4X_localXbothEX1_createdX_limitX1XX: [function({g, v4Id}) { return g.V(v4Id).local(__.bothE("created").limit(1)) }], 
+    g_VX4X_localXbothEXknows_createdX_limitX1XX: [function({g, v4Id}) { return g.V(v4Id).local(__.bothE("knows","created").limit(1)) }], 
+    g_VX4X_localXbothE_limitX1XX_otherV_name: [function({g, v4Id}) { return g.V(v4Id).local(__.bothE().limit(1)).otherV().values("name") }], 
+    g_VX4X_localXbothE_limitX2XX_otherV_name: [function({g, v4Id}) { return g.V(v4Id).local(__.bothE().limit(2)).otherV().values("name") }], 
+    g_V_localXinEXknowsX_limitX2XX_outV_name: [function({g}) { return g.V().local(__.inE("knows").limit(2)).outV().values("name") }], 
+    g_V_localXmatchXproject__created_person__person_name_nameX_selectXname_projectX_by_byXnameX: [function({g}) { return g.V().local(__.match(__.as("project").in_("created").as("person"),__.as("person").values("name").as("name"))).select("name","project").by().by("name") }], 
+    g_VX2X_optionalXoutXknowsXX: [function({g, v2Id}) { return g.V(v2Id).optional(__.out("knows")) }], 
+    g_VX2X_optionalXinXknowsXX: [function({g, v2Id}) { return g.V(v2Id).optional(__.in_("knows")) }], 
+    g_V_hasLabelXpersonX_optionalXoutXknowsX_optionalXoutXcreatedXXX_path: [function({g}) { return g.V().hasLabel("person").optional(__.out("knows").optional(__.out("created"))).path() }], 
+    g_V_optionalXout_optionalXoutXX_path: [function({g}) { return g.V().optional(__.out().optional(__.out())).path() }], 
+    g_VX1X_optionalXaddVXdogXX_label: [function({g, v1Id}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("name","ripple").property( [...]
+    g_V_repeatXoutX_timesX2X_emit_path: [function({g}) { return g.V().repeat(__.out()).times(2).emit().path() }], 
+    g_V_repeatXoutX_timesX2X_repeatXinX_timesX2X_name: [function({g}) { return g.V().repeat(__.out()).times(2).repeat(__.in_()).times(2).values("name") }], 
+    g_V_repeatXoutX_timesX2X: [function({g}) { return g.V().repeat(__.out()).times(2) }], 
+    g_V_repeatXoutX_timesX2X_emit: [function({g}) { return g.V().repeat(__.out()).times(2).emit() }], 
+    g_VX1X_timesX2X_repeatXoutX_name: [function({g, v1Id}) { return g.V(v1Id).times(2).repeat(__.out()).values("name") }], 
+    g_V_emit_timesX2X_repeatXoutX_path: [function({g}) { return g.V().emit().times(2).repeat(__.out()).path() }], 
+    g_V_emit_repeatXoutX_timesX2X_path: [function({g}) { return g.V().emit().repeat(__.out()).times(2).path() }], 
+    g_VX1X_emitXhasXlabel_personXX_repeatXoutX_name: [function({g, v1Id}) { return g.V(v1Id).emit(__.has(T.label,"person")).repeat(__.out()).values("name") }], 
+    g_V_repeatXgroupCountXmX_byXnameX_outX_timesX2X_capXmX: [function({g}) { return g.V().repeat(__.groupCount("m").by("name").out()).times(2).cap("m") }], 
+    g_VX1X_repeatXgroupCountXmX_byXloopsX_outX_timesX3X_capXmX: [function({g, v1Id}) { return g.V(v1Id).repeat(__.groupCount("m").by(__.loops()).out()).times(3).cap("m") }], 
+    g_V_repeatXbothX_timesX10X_asXaX_out_asXbX_selectXa_bX: [function({g}) { return g.V().repeat(__.both()).times(10).as("a").out().as("b").select("a","b").count() }], 
+    g_VX1X_repeatXoutX_untilXoutE_count_isX0XX_name: [function({g, v1Id}) { return g.V(v1Id).repeat(__.out()).until(__.outE().count().is(0)).values("name") }], 
+    g_V_repeatXbothX_untilXname_eq_marko_or_loops_gt_1X_groupCount_byXnameX: [function({g, l}) { return g.V().repeat(__.both()).until(l).groupCount().by("name") }], 
+    g_V_hasXname_markoX_repeatXoutE_inV_simplePathX_untilXhasXname_rippleXX_path_byXnameX_byXlabelX: [function({g}) { return g.V().has("name","marko").repeat(__.outE().inV().simplePath()).until(__.has("name","ripple")).path().by("name").by(T.label) }], 
+    g_V_hasXloop_name_loopX_repeatXinX_timesX5X_path_by_name: [function({g}) { return g.V().has("loops","name","loop").repeat(__.in_()).times(5).path().by("name") }], 
+    g_V_repeatXout_repeatXoutX_timesX1XX_timesX1X_limitX1X_path_by_name: [function({g}) { return g.V().repeat(__.out().repeat(__.out()).times(1)).times(1).limit(1).path().by("name") }], 
+    g_V_repeatXoutXknowsXX_untilXrepeatXoutXcreatedXX_emitXhasXname_lopXXX_path_byXnameX: [function({g}) { return g.V().repeat(__.out("knows")).until(__.repeat(__.out("created")).emit(__.has("name","lop"))).path().by("name") }], 
+    g_V_repeatXrepeatXout_createdXX_untilXhasXname_rippleXXXemit_lang: [function({g}) { return g.V().repeat(__.repeat(__.out("created")).until(__.has("name","ripple"))).emit().values("lang") }], 
+    g_V_untilXconstantXtrueXX_repeatXrepeatXout_createdXX_untilXhasXname_rippleXXXemit_lang: [function({g}) { return g.V().until(__.constant(true)).repeat(__.repeat(__.out("created")).until(__.has("name","ripple"))).emit().values("lang") }], 
+    g_V_emit_repeatXa_outXknows_filterXloops_isX0XX_lang: [function({g}) { return g.V().emit().repeat("a",__.out("knows").filter(__.loops("a").is(0))).values("lang") }], 
+    g_VX3X_repeatXbothX_createdXX_untilXloops_is_40XXemit_repeatXin_knowsXX_emit_loopsXisX1Xdedup_values: [function({g, v3Id}) { return g.V(v3Id).repeat(__.both("created")).until(__.loops().is(40)).emit(__.repeat(__.in_("knows")).emit(__.loops().is(1))).dedup().values("name") }], 
+    g_VX1X_repeatXrepeatXunionXout_uses_out_traversesXX_whereXloops_isX0X_timesX1X_timeX2X_name: [function({g, v1Id}) { return g.V(v1Id).repeat(__.repeat(__.union(__.out("uses"),__.out("traverses")).where(__.loops().is(0))).times(1)).times(2).values("name") }], 
+    g_V_repeatXa_outXknows_repeatXb_outXcreatedX_filterXloops_isX0XX_emit_lang: [function({g}) { return g.V().repeat("a",__.out("knows").repeat("b",__.out("created").filter(__.loops("a").is(0))).emit()).emit().values("lang") }], 
+    g_VX6X_repeatXa_bothXcreatedX_simplePathX_emitXrepeatXb_bothXknowsXX_untilXloopsXbX_asXb_whereXloopsXaX_asXbX_hasXname_vadasXX_dedup_name: [function({g, v6Id}) { return g.V(v6Id).repeat("a",__.both("created").simplePath()).emit(__.repeat("b",__.both("knows")).until(__.loops("b").as("b").where(__.loops("a").as("b"))).has("name","vadas")).dedup().values("name") }], 
+    g_V_unionXout__inX_name: [function({g}) { return g.V().union(__.out(),__.in_()).values("name") }], 
+    g_VX1X_unionXrepeatXoutX_timesX2X__outX_name: [function({g, v1Id}) { return g.V(v1Id).union(__.repeat(__.out()).times(2),__.out()).values("name") }], 
+    g_V_chooseXlabel_is_person__unionX__out_lang__out_nameX__in_labelX: [function({g}) { return g.V().choose(__.label().is("person"),__.union(__.out().values("lang"),__.out().values("name")),__.in_().label()) }], 
+    g_V_chooseXlabel_is_person__unionX__out_lang__out_nameX__in_labelX_groupCount: [function({g}) { return g.V().choose(__.label().is("person"),__.union(__.out().values("lang"),__.out().values("name")),__.in_().label()).groupCount() }], 
+    g_V_unionXrepeatXunionXoutXcreatedX__inXcreatedXX_timesX2X__repeatXunionXinXcreatedX__outXcreatedXX_timesX2XX_label_groupCount: [function({g}) { return g.V().union(__.repeat(__.union(__.out("created"),__.in_("created"))).times(2),__.repeat(__.union(__.in_("created"),__.out("created"))).times(2)).label().groupCount() }], 
+    g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX: [function({g, v1Id, v2Id}) { return g.V(v1Id,v2Id).union(__.outE().count(),__.inE().count(),__.outE().values("weight").sum()) }], 
+    g_VX1_2X_localXunionXoutE_count__inE_count__outE_weight_sumXX: [function({g, v1Id, v2Id}) { return g.V(v1Id,v2Id).local(__.union(__.outE().count(),__.inE().count(),__.outE().values("weight").sum())) }], 
+    g_VX1_2X_localXunionXcountXX: [function({g, v1Id, v2Id}) { return g.V(v1Id,v2Id).local(__.union(__.count())) }], 
+    g_V_andXhasXage_gt_27X__outE_count_gte_2X_name: [function({g}) { return g.V().and(__.has("age",P.gt(27)),__.outE().count().is(P.gte(2))).values("name") }], 
+    g_V_andXoutE__hasXlabel_personX_and_hasXage_gte_32XX_name: [function({g}) { return g.V().and(__.outE(),__.has(T.label,"person").and().has("age",P.gte(32))).values("name") }], 
+    g_V_asXaX_outXknowsX_and_outXcreatedX_inXcreatedX_asXaX_name: [function({g}) { return g.V().as("a").out("knows").and().out("created").in_("created").as("a").values("name") }], 
+    g_V_asXaX_andXselectXaX_selectXaXX: [function({g}) { return g.V().as("a").and(__.select("a"),__.select("a")) }], 
+    g_V_hasXname_markoX_and_hasXname_markoX_and_hasXname_markoX: [function({g}) { return g.V().has("name","marko").and().has("name","marko").and().has("name","marko") }], 
+    g_V_coinX1X: [function({g}) { return g.V().coin(1.0) }], 
+    g_V_coinX0X: [function({g}) { return g.V().coin(0.0) }], 
+    g_VX1X_outXcreatedX_inXcreatedX_cyclicPath: [function({g, v1Id}) { return g.V(v1Id).out("created").in_("created").cyclicPath() }], 
+    g_VX1X_outXcreatedX_inXcreatedX_cyclicPath_path: [function({g, v1Id}) { return g.V(v1Id).out("created").in_("created").cyclicPath().path() }], 
+    g_VX1X_asXaX_outXcreatedX_asXbX_inXcreatedX_asXcX_cyclicPath_fromXaX_toXbX_path: [function({g, v1Id}) { return g.V(v1Id).as("a").out("created").as("b").in_("created").as("c").cyclicPath().from_("a").to("b").path() }], 
+    g_V_out_in_valuesXnameX_fold_dedupXlocalX_unfold: [function({g}) { return g.V().out().in_().values("name").fold().dedup(Scope.local).unfold() }], 
+    g_V_out_asXxX_in_asXyX_selectXx_yX_byXnameX_fold_dedupXlocal_x_yX_unfold: [function({g}) { return g.V().out().as("x").in_().as("y").select("x","y").by("name").fold().dedup(Scope.local,"x","y").unfold() }], 
+    g_V_both_dedup_name: [function({g}) { return g.V().both().dedup().values("name") }], 
+    g_V_both_hasXlabel_softwareX_dedup_byXlangX_name: [function({g}) { return g.V().both().has(T.label,"software").dedup().by("lang").values("name") }], 
+    g_V_both_name_order_byXa_bX_dedup_value: [function({g, l}) { return g.V().both().properties("name").order().by(l).dedup().value() }], 
+    g_V_both_both_name_dedup: [function({g}) { return g.V().both().both().values("name").dedup() }], 
+    g_V_both_both_dedup: [function({g}) { return g.V().both().both().dedup() }], 
+    g_V_both_both_dedup_byXlabelX: [function({g}) { return g.V().both().both().dedup().by(T.label) }], 
+    g_V_group_byXlabelX_byXbothE_weight_dedup_foldX: [function({g}) { return g.V().group().by(T.label).by(__.bothE().values("weight").dedup().fold()) }], 
+    g_V_asXaX_both_asXbX_dedupXa_bX_byXlabelX_selectXa_bX: [function({g}) { return g.V().as("a").both().as("b").dedup("a","b").by(T.label).select("a","b") }], 
+    g_V_asXaX_outXcreatedX_asXbX_inXcreatedX_asXcX_dedupXa_bX_path: [function({g}) { return g.V().as("a").out("created").as("b").in_("created").as("c").dedup("a","b").path() }], 
+    g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_ascX_selectXvX_valuesXnameX_dedup: [function({g}) { return g.V().outE().as("e").inV().as("v").select("e").order().by("weight",Order.asc).select("v").values("name").dedup() }], 
+    g_V_both_both_dedup_byXoutE_countX_name: [function({g}) { return g.V().both().both().dedup().by(__.outE().count()).values("name") }], 
+    g_V_groupCount_selectXvaluesX_unfold_dedup: [function({g}) { return g.V().groupCount().select(Column.values).unfold().dedup() }], 
+    g_V_asXaX_repeatXbothX_timesX3X_emit_name_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_foldX_selectXvaluesX_unfold_dedup: [function({g}) { return g.V().as("a").repeat(__.both()).times(3).emit().values("name").as("b").group().by(__.select("a")).by(__.select("b").dedup().order().fold()).select(Column.values).unfold().dedup() }], 
+    g_V_repeatXdedupX_timesX2X_count: [function({g}) { return g.V().repeat(__.dedup()).times(2).count() }], 
+    g_V_bothE_properties_dedup_count: [function({g}) { return g.V().bothE().properties().dedup().count() }], 
+    g_V_both_properties_dedup_count: [function({g}) { return g.V().both().properties().dedup().count() }], 
+    g_V_both_properties_properties_dedup_count: [function({g}) { return g.V().both().properties().properties().dedup().count() }], 
+    g_V_drop: [function({g}) { return g.addV().as("a").addV().as("b").addE("knows").to("a") }, function({g}) { return g.V().drop() }, function({g}) { return g.V() }, function({g}) { return g.E() }], 
+    g_V_outE_drop: [function({g}) { return g.addV().as("a").addV().as("b").addE("knows").to("a") }, function({g}) { return g.V().outE().drop() }, function({g}) { return g.V() }, function({g}) { return g.E() }], 
+    g_V_properties_drop: [function({g}) { return g.addV().property("name","bob").addV().property("name","alice") }, function({g}) { return g.V().properties().drop() }, function({g}) { return g.V() }, function({g}) { return g.V().properties() }], 
+    g_E_propertiesXweightX_drop: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("name","ripple").property("lang","jav [...]
+    g_V_properties_propertiesXstartTimeX_drop: [function({g}) { return g.addV().property("name","bob").property(Cardinality.list,"location","ny","startTime",2014,"endTime",2016).property(Cardinality.list,"location","va","startTime",2016).addV().property("name","alice").property(Cardinality.list,"location","va","startTime",2014,"endTime",2016).property(Cardinality.list,"location","ny","startTime",2016) }, function({g}) { return g.V().properties().properties("startTime").drop() }, function [...]
+    g_V_filterXfalseX: [function({g, l1}) { return g.V().filter(l1) }], 
+    g_V_filterXtrueX: [function({g, l1}) { return g.V().filter(l1) }], 
+    g_V_filterXlang_eq_javaX: [function({g, l1}) { return g.V().filter(l1) }], 
+    g_VX1X_filterXage_gt_30X: [function({g, v1Id, l1}) { return g.V(v1Id).filter(l1) }], 
+    g_VX2X_filterXage_gt_30X: [function({g, v2Id, l1}) { return g.V(v2Id).filter(l1) }], 
+    g_VX1X_out_filterXage_gt_30X: [function({g, v1Id, l1}) { return g.V(v1Id).out().filter(l1) }], 
+    g_V_filterXname_startsWith_m_OR_name_startsWith_pX: [function({g, l1}) { return g.V().filter(l1) }], 
+    g_E_filterXfalseX: [function({g, l1}) { return g.E().filter(l1) }], 
+    g_E_filterXtrueX: [function({g, l1}) { return g.E().filter(l1) }], 
+    g_V_outXcreatedX_hasXname__mapXlengthX_isXgtX3XXX_name: [function({g, l1}) { return g.V().out("created").has("name",__.map(l1).is(P.gt(3))).values("name") }], 
+    g_VX1X_hasXnameX: [function({g, v1Id}) { return g.V(v1Id).has("name") }], 
+    g_VX1X_hasXcircumferenceX: [function({g, v1Id}) { return g.V(v1Id).has("circumference") }], 
+    g_VX1X_hasXname_markoX: [function({g, v1Id}) { return g.V(v1Id).has("name","marko") }], 
+    g_VX2X_hasXname_markoX: [function({g, v1Id}) { return g.V(v1Id).has("name","marko") }], 
+    g_V_hasXname_markoX: [function({g}) { return g.V().has("name","marko") }], 
+    g_V_hasXname_blahX: [function({g}) { return g.V().has("name","blah") }], 
+    g_V_hasXage_gt_30X: [function({g}) { return g.V().has("age",P.gt(30)) }], 
+    g_V_hasXage_isXgt_30XX: [function({g}) { return g.V().has("age",__.is(P.gt(30))) }], 
+    g_V_hasXlabel_isXsoftwareXX: [function({g}) { return g.V().has(T.label,__.is("software")) }], 
+    g_VX1X_hasXage_gt_30X: [function({g, v1Id}) { return g.V(v1Id).has("age",P.gt(30)) }], 
+    g_VX4X_hasXage_gt_30X: [function({g, v4Id}) { return g.V(v4Id).has("age",P.gt(30)) }], 
+    g_VXv1X_hasXage_gt_30X: [function({g, v1}) { return g.V(v1).has("age",P.gt(30)) }], 
+    g_VXv4X_hasXage_gt_30X: [function({g, v4}) { return g.V(v4).has("age",P.gt(30)) }], 
+    g_VX1X_out_hasXid_lt_3X: [function({g, v1Id, ltXv3IdX}) { return g.V(v1Id).out().has(T.id,ltXv3IdX) }], 
+    g_VX1AsStringX_out_hasXid_2AsStringX: [function({g, v1Id, v2Id}) { return g.V(v1Id).out().hasId(v2Id) }], 
+    g_VX1X_out_hasXid_2X: [function({g, v2}) { return g.V(v2).has("age",P.gt(30)) }], 
+    g_VX1X_out_hasIdX2X: [function({g, v1Id, v2Id}) { return g.V(v1Id).out().hasId(v2Id) }], 
+    g_VX1X_out_hasXid_2_3X: [function({g, v1Id, v2Id, v3Id}) { return g.V(v1Id).out().hasId(v2Id,v3Id) }], 
+    g_VX1X_out_hasXid_2AsString_3AsStringX: [function({g, v1Id, v2Id, v3Id}) { return g.V(v1Id).out().hasId(v2Id,v3Id) }], 
+    g_V_hasXblahX: [function({g}) { return g.V().has("blah") }], 
+    g_EX7X_hasXlabelXknowsX: [function({g, e7Id}) { return g.E(e7Id).hasLabel("knows") }], 
+    g_E_hasXlabelXknowsX: [function({g}) { return g.E().hasLabel("knows") }], 
+    g_E_hasLabelXuses_traversesX: [function({g}) { return g.E().hasLabel("uses","traverses") }], 
+    g_V_hasLabelXperson_software_blahX: [function({g}) { return g.V().hasLabel("person","software","blah") }], 
+    g_V_hasXperson_name_markoX_age: [function({g}) { return g.V().has("person","name","marko").values("age") }], 
+    g_VX1X_outE_hasXweight_inside_0_06X_inV: [function({g, v1Id}) { return g.V(v1Id).outE().has("weight",P.gt(0.0).and(P.lt(0.6))).inV() }], 
+    g_EX11X_outV_outE_hasXid_10X: [function({g, e11Id, e10Id}) { return g.E(e11Id).outV().outE().has(T.id,e10Id) }], 
+    g_EX11X_outV_outE_hasXid_10AsStringX: [function({g, e11Id, e10Id}) { return g.E(e11Id).outV().outE().has(T.id,e10Id) }], 
+    g_V_hasXlocationX: [function({g}) { return g.V().has("location") }], 
+    g_V_hasLabelXpersonX_hasXage_notXlteX10X_andXnotXbetweenX11_20XXXX_andXltX29X_orXeqX35XXXX_name: [function({g}) { return g.V().hasLabel("person").has("age",P.gt(10).or(P.gte(11).and(P.lt(20))).and(P.lt(29).or(P.eq(35)))).values("name") }], 
+    g_V_in_hasIdXneqX1XX: [function({g, neqXv1IdX}) { return g.V().in_().hasId(neqXv1IdX) }], 
+    g_V_hasXage_withinX27X_count: [function({g}) { return g.V().has("age",P.within([27])).count() }], 
+    g_V_hasXage_withinX27_29X_count: [function({g}) { return g.V().has("age",P.within([27, 29])).count() }], 
+    g_V_hasXage_withoutX27X_count: [function({g}) { return g.V().has("age",P.without([27])).count() }], 
+    g_V_hasXage_withoutX27_29X_count: [function({g}) { return g.V().has("age",P.without([27, 29])).count() }], 
+    g_V_both_dedup_properties_hasKeyXageX_value: [function({g}) { return g.V().both().properties().dedup().hasKey("age").value() }], 
+    g_V_both_dedup_properties_hasKeyXageX_hasValueXgtX30XX_value: [function({g}) { return g.V().both().properties().dedup().hasKey("age").hasValue(P.gt(30)).value() }], 
+    g_V_bothE_properties_dedup_hasKeyXweightX_value: [function({g}) { return g.V().bothE().properties().dedup().hasKey("weight").value() }], 
+    g_V_bothE_properties_dedup_hasKeyXweightX_hasValueXltX0d3XX_value: [function({g}) { return g.V().bothE().properties().dedup().hasKey("weight").hasValue(P.lt(0.3)).value() }], 
+    g_V_hasNotXageX_name: [function({g}) { return g.V().hasNot("age").values("name") }], 
+    g_V_hasIdX1X_hasIdX2X: [function({g, v1Id, v2Id}) { return g.V().hasId(v1Id).hasId(v2Id) }], 
+    g_V_hasLabelXpersonX_hasLabelXsoftwareX: [function({g}) { return g.V().hasLabel("person").hasLabel("software") }], 
+    g_V_hasIdXemptyX_count: [function({g, l}) { return g.V().hasId(l).count() }], 
+    g_V_hasIdXwithinXemptyXX_count: [function({g, withinXlX}) { return g.V().hasId(withinXlX).count() }], 
+    g_V_hasIdXwithoutXemptyXX_count: [function({g, withoutXlX}) { return g.V().hasId(withoutXlX).count() }], 
+    g_V_notXhasIdXwithinXemptyXXX_count: [function({g, withinXlX}) { return g.V().not(__.hasId(withinXlX)).count() }], 
+    g_V_hasXname_containingXarkXX: [function({g}) { return g.V().has("name",TextP.containing("ark")) }], 
+    g_V_hasXname_startingWithXmarXX: [function({g}) { return g.V().has("name",TextP.startingWith("mar")) }], 
+    g_V_hasXname_endingWithXasXX: [function({g}) { return g.V().has("name",TextP.endingWith("as")) }], 
+    g_V_hasXperson_name_containingXoX_andXltXmXXX: [function({g}) { return g.V().has("person","name",TextP.containing("o").and(P.lt("m"))) }], 
+    g_V_hasXname_gtXmX_andXcontainingXoXXX: [function({g}) { return g.V().has("name",P.gt("m").and(TextP.containing("o"))) }], 
+    g_V_hasXname_not_containingXarkXX: [function({g}) { return g.V().has("name",TextP.notContaining("ark")) }], 
+    g_V_hasXname_not_startingWithXmarXX: [function({g}) { return g.V().has("name",TextP.notStartingWith("mar")) }], 
+    g_V_hasXname_not_endingWithXasXX: [function({g}) { return g.V().has("name",TextP.notEndingWith("as")) }], 
+    g_V_hasXp_neqXvXX: [function({g}) { return g.V().has("p",P.neq("v")) }], 
+    g_V_valuesXageX_isX32X: [function({g}) { return g.V().values("age").is(32) }], 
+    g_V_valuesXageX_isXlte_30X: [function({g}) { return g.V().values("age").is(P.lte(30)) }], 
+    g_V_valuesXageX_isXgte_29X_isXlt_34X: [function({g}) { return g.V().values("age").is(P.gte(29)).is(P.lt(34)) }], 
+    g_V_whereXinXcreatedX_count_isX1XX_valuesXnameX: [function({g}) { return g.V().where(__.in_("created").count().is(1)).values("name") }], 
+    g_V_whereXinXcreatedX_count_isXgte_2XX_valuesXnameX: [function({g}) { return g.V().where(__.in_("created").count().is(P.gte(2))).values("name") }], 
+    g_V_orXhasXage_gt_27X__outE_count_gte_2X_name: [function({g}) { return g.V().or(__.has("age",P.gt(27)),__.outE().count().is(P.gte(2))).values("name") }], 
+    g_V_orXoutEXknowsX__hasXlabel_softwareX_or_hasXage_gte_35XX_name: [function({g}) { return g.V().or(__.outE("knows"),__.has(T.label,"software").or().has("age",P.gte(35))).values("name") }], 
+    g_V_asXaX_orXselectXaX_selectXaXX: [function({g}) { return g.V().as("a").or(__.select("a"),__.select("a")) }], 
+    g_VX1X_out_limitX2X: [function({g, v1Id}) { return g.V(v1Id).out().limit(2) }], 
+    g_V_localXoutE_limitX1X_inVX_limitX3X: [function({g}) { return g.V().local(__.outE().limit(1)).inV().limit(3) }], 
+    g_VX1X_outXknowsX_outEXcreatedX_rangeX0_1X_inV: [function({g, v1Id}) { return g.V(v1Id).out("knows").outE("created").range(0,1).inV() }], 
+    g_VX1X_outXknowsX_outXcreatedX_rangeX0_1X: [function({g, v1Id}) { return g.V(v1Id).out("knows").out("created").range(0,1) }], 
+    g_VX1X_outXcreatedX_inXcreatedX_rangeX1_3X: [function({g, v1Id}) { return g.V(v1Id).out("created").in_("created").range(1,3) }], 
+    g_VX1X_outXcreatedX_inEXcreatedX_rangeX1_3X_outV: [function({g, v1Id}) { return g.V(v1Id).out("created").inE("created").range(1,3).outV() }], 
+    g_V_repeatXbothX_timesX3X_rangeX5_11X: [function({g}) { return g.V().repeat(__.both()).times(3).range(5,11) }], 
+    g_V_asXaX_in_asXbX_in_asXcX_selectXa_b_cX_byXnameX_limitXlocal_2X: [function({g}) { return g.V().as("a").in_().as("b").in_().as("c").select("a","b","c").by("name").limit(Scope.local,2) }], 
+    g_V_asXaX_in_asXbX_in_asXcX_selectXa_b_cX_byXnameX_limitXlocal_1X: [function({g}) { return g.V().as("a").in_().as("b").in_().as("c").select("a","b","c").by("name").limit(Scope.local,1) }], 
+    g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_rangeXlocal_1_3X: [function({g}) { return g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").range(Scope.local,1,3) }], 
+    g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_rangeXlocal_1_2X: [function({g}) { return g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").range(Scope.local,1,2) }], 
+    g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_rangeXlocal_1_3X: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select(Pop.mixed,"a").by(__.unfold().values("name").fold()).range(Scope.local,1,3) }], 
+    g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_rangeXlocal_1_2X: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select(Pop.mixed,"a").by(__.unfold().values("name").fold()).range(Scope.local,1,2) }], 
+    g_V_hasLabelXpersonX_order_byXageX_skipX1X_valuesXnameX: [function({g}) { return g.V().hasLabel("person").order().by("age").skip(1).values("name") }], 
+    g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_rangeXlocal_4_5X: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select(Pop.mixed,"a").by(__.unfold().values("name").fold()).range(Scope.local,4,5) }], 
+    g_V_outE_valuesXweightX_fold_orderXlocalX_skipXlocal_2X: [function({g}) { return g.V().outE().values("weight").fold().order(Scope.local).skip(Scope.local,2) }], 
+    g_V_asXaX_in_asXaX_in_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_limitXlocal_1X: [function({g}) { return g.V().as("a").in_().as("a").in_().as("a").select(Pop.mixed,"a").by(__.unfold().values("name").fold()).limit(Scope.local,1) }], 
+    g_V_asXaX_in_asXaX_in_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_limitXlocal_2X: [function({g}) { return g.V().as("a").in_().as("a").in_().as("a").select(Pop.mixed,"a").by(__.unfold().values("name").fold()).limit(Scope.local,2) }], 
+    g_V_hasLabelXpersonX_order_byXageX_valuesXnameX_skipX1X: [function({g}) { return g.V().hasLabel("person").order().by("age").values("name").skip(1) }], 
+    g_E_sampleX1X: [function({g}) { return g.E().sample(1) }], 
+    g_E_sampleX2X_byXweightX: [function({g}) { return g.E().sample(2).by("weight") }], 
+    g_V_localXoutE_sampleX1X_byXweightXX: [function({g}) { return g.V().local(__.outE().sample(1).by("weight")) }], 
+    g_V_group_byXlabelX_byXbothE_weight_sampleX2X_foldX: [function({g}) { return g.V().group().by(T.label).by(__.bothE().values("weight").sample(2).fold()) }], 
+    g_V_group_byXlabelX_byXbothE_weight_fold_sampleXlocal_5XX: [function({g}) { return g.V().group().by(T.label).by(__.bothE().values("weight").fold().sample(Scope.local,5)) }], 
+    g_VX1X_outXcreatedX_inXcreatedX_simplePath: [function({g, v1Id}) { return g.V(v1Id).out("created").in_("created").simplePath() }], 
+    g_V_repeatXboth_simplePathX_timesX3X_path: [function({g}) { return g.V().repeat(__.both().simplePath()).times(3).path() }], 
+    g_V_asXaX_out_asXbX_out_asXcX_simplePath_byXlabelX_fromXbX_toXcX_path_byXnameX: [function({g}) { return g.V().as("a").out().as("b").out().as("c").simplePath().by(T.label).from_("b").to("c").path().by("name") }], 
+    g_V_valuesXnameX_order_tailXglobal_2X: [function({g}) { return g.V().values("name").order().tail(Scope.global,2) }], 
+    g_V_valuesXnameX_order_tailX2X: [function({g}) { return g.V().values("name").order().tail(2) }], 
+    g_V_valuesXnameX_order_tail: [function({g}) { return g.V().values("name").order().tail() }], 
+    g_V_valuesXnameX_order_tailX7X: [function({g}) { return g.V().values("name").order().tail(7) }], 
+    g_V_repeatXbothX_timesX3X_tailX7X: [function({g}) { return g.V().repeat(__.both()).times(3).tail(7) }], 
+    g_V_repeatXin_outX_timesX3X_tailX7X_count: [function({g}) { return g.V().repeat(__.in_().out()).times(3).tail(7).count() }], 
+    g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocal_1X: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).tail(Scope.local,1) }], 
+    g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocalX: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).tail(Scope.local) }], 
+    g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_tailXlocal_2X: [function({g}) { return g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").tail(Scope.local,2) }], 
+    g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_tailXlocal_1X: [function({g}) { return g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").tail(Scope.local,1) }], 
+    g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_tailXlocal_1X: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select(Pop.mixed,"a").by(__.unfold().values("name").fold()).tail(Scope.local,1) }], 
+    g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_tailXlocalX: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select(Pop.mixed,"a").by(__.unfold().values("name").fold()).tail(Scope.local) }], 
+    g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXlimitXlocal_0XX_tailXlocal_1X: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select(Pop.mixed,"a").by(__.limit(Scope.local,0)).tail(Scope.local,1) }], 
+    g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_tailXlocal_2X: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select(Pop.mixed,"a").by(__.unfold().values("name").fold()).tail(Scope.local,2) }], 
+    g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXa_eqXbXX: [function({g}) { return g.V().has("age").as("a").out().in_().has("age").as("b").select("a","b").where("a",P.eq("b")) }], 
+    g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXa_neqXbXX: [function({g}) { return g.V().has("age").as("a").out().in_().has("age").as("b").select("a","b").where("a",P.neq("b")) }], 
+    g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXb_hasXname_markoXX: [function({g}) { return g.V().has("age").as("a").out().in_().has("age").as("b").select("a","b").where(__.as("b").has("name","marko")) }], 
+    g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXa_outXknowsX_bX: [function({g}) { return g.V().has("age").as("a").out().in_().has("age").as("b").select("a","b").where(__.as("a").out("knows").as("b")) }], 
+    g_V_asXaX_outXcreatedX_whereXasXaX_name_isXjoshXX_inXcreatedX_name: [function({g}) { return g.V().as("a").out("created").where(__.as("a").values("name").is("josh")).in_("created").values("name") }], 
+    g_withSideEffectXa_josh_peterX_VX1X_outXcreatedX_inXcreatedX_name_whereXwithinXaXX: [function({g, v1Id, l}) { return g.withSideEffect("a",l).V(v1Id).out("created").in_("created").values("name").where(P.within(["a"])) }], 
+    g_VX1X_asXaX_outXcreatedX_inXcreatedX_asXbX_whereXa_neqXbXX_name: [function({g, v1Id}) { return g.V(v1Id).as("a").out("created").in_("created").as("b").where("a",P.neq("b")).values("name") }], 
+    g_VX1X_asXaX_outXcreatedX_inXcreatedX_asXbX_whereXasXbX_outXcreatedX_hasXname_rippleXX_valuesXage_nameX: [function({g, v1Id}) { return g.V(v1Id).as("a").out("created").in_("created").as("b").where(__.as("b").out("created").has("name","ripple")).values("age","name") }], 
+    g_VX1X_asXaX_outXcreatedX_inXcreatedX_whereXeqXaXX_name: [function({g, v1Id}) { return g.V(v1Id).as("a").out("created").in_("created").where(P.eq("a")).values("name") }], 
+    g_VX1X_asXaX_outXcreatedX_inXcreatedX_whereXneqXaXX_name: [function({g, v1Id}) { return g.V(v1Id).as("a").out("created").in_("created").where(P.neq("a")).values("name") }], 
+    g_VX1X_out_aggregateXxX_out_whereXnotXwithinXaXXX: [function({g, v1Id}) { return g.V(v1Id).out().aggregate("x").out().where(P.without(["x"])) }], 
+    g_withSideEffectXa_g_VX2XX_VX1X_out_whereXneqXaXX: [function({g, v1Id, v2}) { return g.withSideEffect("a",v2).V(v1Id).out().where(P.neq("a")) }], 
+    g_VX1X_repeatXbothEXcreatedX_whereXwithoutXeXX_aggregateXeX_otherVX_emit_path: [function({g, v1Id}) { return g.V(v1Id).repeat(__.bothE("created").where(P.without(["e"])).aggregate("e").otherV()).emit().path() }], 
+    g_V_whereXnotXoutXcreatedXXX_name: [function({g}) { return g.V().where(__.not(__.out("created"))).values("name") }], 
+    g_V_asXaX_out_asXbX_whereXandXasXaX_outXknowsX_asXbX__orXasXbX_outXcreatedX_hasXname_rippleX__asXbX_inXknowsX_count_isXnotXeqX0XXXXX_selectXa_bX: [function({g}) { return g.V().as("a").out().as("b").where(__.and(__.as("a").out("knows").as("b"),__.or(__.as("b").out("created").has("name","ripple"),__.as("b").in_("knows").count().is(P.neq(0))))).select("a","b") }], 
+    g_V_whereXoutXcreatedX_and_outXknowsX_or_inXknowsXX_valuesXnameX: [function({g}) { return g.V().where(__.out("created").and().out("knows").or().in_("knows")).values("name") }], 
+    g_V_asXaX_outXcreatedX_asXbX_whereXandXasXbX_in__notXasXaX_outXcreatedX_hasXname_rippleXXX_selectXa_bX: [function({g}) { return g.V().as("a").out("created").as("b").where(__.and(__.as("b").in_(),__.not(__.as("a").out("created").has("name","ripple")))).select("a","b") }], 
+    g_V_asXaX_outXcreatedX_asXbX_inXcreatedX_asXcX_bothXknowsX_bothXknowsX_asXdX_whereXc__notXeqXaX_orXeqXdXXXX_selectXa_b_c_dX: [function({g}) { return g.V().as("a").out("created").as("b").in_("created").as("c").both("knows").both("knows").as("d").where("c",P.neq("a").and(P.neq("d"))).select("a","b","c","d") }], 
+    g_V_asXaX_out_asXbX_whereXin_count_isXeqX3XX_or_whereXoutXcreatedX_and_hasXlabel_personXXX_selectXa_bX: [function({g}) { return g.V().as("a").out().as("b").where(__.as("b").in_().count().is(P.eq(3)).or().where(__.as("b").out("created").and().as("b").has(T.label,"person"))).select("a","b") }], 
+    g_V_asXaX_outXcreatedX_inXcreatedX_asXbX_whereXa_gtXbXX_byXageX_selectXa_bX_byXnameX: [function({g}) { return g.V().as("a").out("created").in_("created").as("b").where("a",P.gt("b")).by("age").select("a","b").by("name") }], 
+    g_V_asXaX_outEXcreatedX_asXbX_inV_asXcX_whereXa_gtXbX_orXeqXbXXX_byXageX_byXweightX_byXweightX_selectXa_cX_byXnameX: [function({g}) { return g.V().as("a").outE("created").as("b").inV().as("c").where("a",P.gt("b").or(P.eq("b"))).by("age").by("weight").by("weight").select("a","c").by("name") }], 
+    g_V_asXaX_outEXcreatedX_asXbX_inV_asXcX_inXcreatedX_asXdX_whereXa_ltXbX_orXgtXcXX_andXneqXdXXX_byXageX_byXweightX_byXinXcreatedX_valuesXageX_minX_selectXa_c_dX: [function({g}) { return g.V().as("a").outE("created").as("b").inV().as("c").in_("created").as("d").where("a",P.lt("b").or(P.gt("c")).and(P.neq("d"))).by("age").by("weight").by(__.in_("created").values("age").min()).select("a","c","d").by("name") }], 
+    g_VX1X_asXaX_out_hasXageX_whereXgtXaXX_byXageX_name: [function({g, v1Id}) { return g.V(v1Id).as("a").out().has("age").where(P.gt("a")).by("age").values("name") }], 
+    g_VX1X_asXaX_outXcreatedX_addEXcreatedByX_toXaX: [function({g, v1Id}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("name","rip [...]
+    g_VX1X_asXaX_outXcreatedX_addEXcreatedByX_toXaX_propertyXweight_2X: [function({g, v1Id}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).p [...]
+    g_V_outE_propertyXweight_nullX: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("name","ripple").property("lang"," [...]
+    g_V_aggregateXxX_asXaX_selectXxX_unfold_addEXexistsWithX_toXaX_propertyXtime_nowX: [function({g, v1Id, v2Id, v3Id, v4Id, v5Id, v6Id}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).a [...]
+    g_V_asXaX_outXcreatedX_inXcreatedX_whereXneqXaXX_asXbX_addEXcodeveloperX_fromXaX_toXbX_propertyXyear_2009X: [function({g, v1Id, v2Id, v4Id, v6Id}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").propert [...]
+    g_V_asXaX_inXcreatedX_addEXcreatedByX_fromXaX_propertyXyear_2009X_propertyXacl_publicX: [function({g, v1Id, v2Id, v3Id, v4Id, v5Id, v6Id}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age", [...]
+    g_withSideEffectXb_bX_VXaX_addEXknowsX_toXbX_propertyXweight_0_5X: [function({g, v6, v1}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5). [...]
+    g_addV_asXfirstX_repeatXaddEXnextX_toXaddVX_inVX_timesX5X_addEXnextX_toXselectXfirstXX: [function({g}) { return g.addV().as("first").repeat(__.addE("next").to(__.addV()).inV()).times(5).addE("next").to(__.select("first")) }, function({g}) { return g.V() }, function({g}) { return g.E() }, function({g}) { return g.E().hasLabel("next") }, function({g}) { return g.V().limit(1).bothE() }, function({g}) { return g.V().limit(1).inE() }, function({g}) { return g.V().limit(1).outE() }], 
+    g_V_hasXname_markoX_asXaX_outEXcreatedX_asXbX_inV_addEXselectXbX_labelX_toXaX: [function({g, v1}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property( [...]
+    g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_descX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX: [function({g, v2}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh"). [...]
+    g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X: [function({g, v6, v1, dotOne}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property( [...]
+    g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X: [function({g, v6, v1, dotOne}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("na [...]
+    g_VX1X_addVXanimalX_propertyXage_selectXaX_byXageXX_propertyXname_puppyX: [function({g, v1Id}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.i [...]
+    g_V_addVXanimalX_propertyXage_0X: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("name","ripple").property("lang" [...]
+    g_addVXpersonX_propertyXname_stephenX: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("name","ripple").property(" [...]
+    g_V_hasLabelXpersonX_propertyXname_nullX: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("name","ripple").propert [...]
+    g_addVXpersonX_propertyXsingle_name_stephenX_propertyXsingle_name_stephenmX: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5 [...]
+    get_g_addVXpersonX_propertyXsingle_name_stephenX_propertyXsingle_name_stephenm_since_2010X: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software"). [...]
+    g_V_hasXname_markoX_propertyXfriendWeight_outEXknowsX_weight_sum__acl_privateX: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.i [...]
+    g_addVXanimalX_propertyXname_mateoX_propertyXname_gateoX_propertyXname_cateoX_propertyXage_5X: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software [...]
+    g_withSideEffectXa_markoX_addV_propertyXname_selectXaXX_name: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("nam [...]
+    g_addVXpersonX_propertyXsingle_name_stephenX_propertyXsingle_name_stephenm_since_2010X: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").prop [...]
+    g_V_addVXanimalX_propertyXname_valuesXnameXX_propertyXname_an_animalX_propertyXvaluesXnameX_labelX: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("sof [...]
+    g_withSideEffectXa_testX_V_hasLabelXsoftwareX_propertyXtemp_selectXaXX_valueMapXname_tempX: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software"). [...]
+    g_withSideEffectXa_nameX_addV_propertyXselectXaX_markoX_name: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("nam [...]
+    g_V_asXaX_hasXname_markoX_outXcreatedX_asXbX_addVXselectXaX_labelX_propertyXtest_selectXbX_labelX_valueMap_withXtokensX: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32) [...]
+    g_addVXV_hasXname_markoX_propertiesXnameX_keyX_label: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("name","ripp [...]
+    g_addVXnullX_propertyXid_nullX: [function({g}) { return g.addV(null).property(T.id,null) }, function({g}) { return g.V().hasLabel("vertex") }], 
+    g_addV_propertyXlabel_personX: [function({g}) { return g.addV().property(T.label,"person") }, function({g}) { return g.V().hasLabel("person") }], 
+    g_V_coalesceXoutXfooX_outXbarXX: [function({g}) { return g.V().coalesce(__.out("foo"),__.out("bar")) }], 
+    g_VX1X_coalesceXoutXknowsX_outXcreatedXX_valuesXnameX: [function({g, v1Id}) { return g.V(v1Id).coalesce(__.out("knows"),__.out("created")).values("name") }], 
+    g_VX1X_coalesceXoutXcreatedX_outXknowsXX_valuesXnameX: [function({g, v1Id}) { return g.V(v1Id).coalesce(__.out("created"),__.out("knows")).values("name") }], 
+    g_V_coalesceXoutXlikesX_outXknowsX_inXcreatedXX_groupCount_byXnameX: [function({g}) { return g.V().coalesce(__.out("likes"),__.out("knows"),__.out("created")).groupCount().by("name") }], 
+    g_V_coalesceXoutEXknowsX_outEXcreatedXX_otherV_path_byXnameX_byXlabelX: [function({g}) { return g.V().coalesce(__.outE("knows"),__.outE("created")).otherV().path().by("name").by(T.label) }], 
+    g_V_outXcreatedX_order_byXnameX_coalesceXname_constantXxXX: [function({g}) { return g.V().out("created").order().by("name").coalesce(__.values("name"),__.constant("x")) }], 
+    g_V_connectedComponent_hasXcomponentX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().connectedComponent().has("gremlin.connectedComponentVertexProgram.component") }], 
+    g_V_dedup_connectedComponent_hasXcomponentX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().dedup().connectedComponent().has("gremlin.connectedComponentVertexProgram.component") }], 
+    g_V_hasLabelXsoftwareX_connectedComponent_project_byXnameX_byXcomponentX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().hasLabel("software").connectedComponent().project("name","component").by("name").by("gremlin.connectedComponentVertexProgram.component") }], 
+    g_V_connectedComponent_withXEDGES_bothEXknowsXX_withXPROPERTY_NAME_clusterX_project_byXnameX_byXclusterX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().hasLabel("person").connectedComponent().with_("~tinkerpop.connectedComponent.edges",__.bothE("knows")).with_("~tinkerpop.connectedComponent.propertyName","cluster").project("name","cluster").by("name").by("cluster") }], 
+    g_V_constantX123X: [function({g}) { return g.V().constant(123) }], 
+    g_V_constantXnullX: [function({g}) { return g.V().constant(null) }], 
+    g_V_chooseXhasLabelXpersonX_valuesXnameX_constantXinhumanXX: [function({g}) { return g.V().choose(__.hasLabel("person"),__.values("name"),__.constant("inhuman")) }], 
+    g_V_count: [function({g}) { return g.V().count() }], 
+    g_V_out_count: [function({g}) { return g.V().out().count() }], 
+    g_V_both_both_count: [function({g}) { return g.V().both().both().count() }], 
+    g_V_fold_countXlocalX: [function({g}) { return g.V().fold().count(Scope.local) }], 
+    g_V_hasXnoX_count: [function({g}) { return g.V().has("no").count() }], 
+    g_V_whereXinXkknowsX_outXcreatedX_count_is_0XX_name: [function({g}) { return g.V().where(__.in_("knows").out("created").count().is(0)).values("name") }], 
+    g_V_repeatXoutX_timesX8X_count: [function({g}) { return g.V().repeat(__.out()).times(8).count() }], 
+    g_V_repeatXoutX_timesX5X_asXaX_outXwrittenByX_asXbX_selectXa_bX_count: [function({g}) { return g.V().repeat(__.out()).times(5).as("a").out("writtenBy").as("b").select("a","b").count() }], 
+    g_V_repeatXoutX_timesX3X_count: [function({g}) { return g.V().repeat(__.out()).times(3).count() }], 
+    g_V_elementMap: [function({g}) { return g.V().elementMap() }], 
+    g_V_elementMapXname_ageX: [function({g}) { return g.V().elementMap("name","age") }], 
+    g_EX11X_elementMap: [function({g, e11Id}) { return g.E(e11Id).elementMap() }], 
+    g_V_asXaX_flatMapXselectXaXX: [function({g}) { return g.V().as("a").flatMap(__.select("a")) }], 
+    g_V_fold: [function({g}) { return g.V().fold() }], 
+    g_V_fold_unfold: [function({g}) { return g.V().fold().unfold() }], 
+    g_V_age_foldX0_plusX: [function({g}) { return g.V().values("age").fold(0,Operator.sum) }], 
+    g_VX1X_V_valuesXnameX: [function({g, v1Id}) { return g.V(v1Id).V().values("name") }], 
+    g_V_outXknowsX_V_name: [function({g}) { return g.V().out("knows").V().values("name") }], 
+    g_V_hasXname_GarciaX_inXsungByX_asXsongX_V_hasXname_Willie_DixonX_inXwrittenByX_whereXeqXsongXX_name: [function({g}) { return g.V().has("artist","name","Garcia").in_("sungBy").as("song").V().has("artist","name","Willie_Dixon").in_("writtenBy").where(P.eq("song")).values("name") }], 
+    g_V_hasLabelXpersonX_asXpX_VXsoftwareX_addInEXuses_pX: [function({g, software, v1Id, v2Id, v3Id, v4Id, v5Id, v6Id}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("so [...]
+    g_V_hasLabelXsoftwareX_index_unfold: [function({g}) { return g.V().hasLabel("software").index().unfold() }], 
+    g_V_hasLabelXsoftwareX_order_byXnameX_index_withXmapX: [function({g}) { return g.V().hasLabel("software").order().by("name").index().with_("~tinkerpop.index.indexer",1) }], 
+    g_V_hasLabelXsoftwareX_name_fold_orderXlocalX_index_unfold_order_byXtailXlocal_1XX: [function({g}) { return g.V().hasLabel("software").values("name").fold().order(Scope.local).index().unfold().order().by(__.tail(Scope.local,1)) }], 
+    g_V_hasLabelXpersonX_name_fold_orderXlocalX_index_withXmapX: [function({g}) { return g.V().hasLabel("person").values("name").fold().order(Scope.local).index().with_("~tinkerpop.index.indexer",1) }], 
+    g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX3XX_hasXname_peterX_path_byXnameX: [function({g, v1Id}) { return g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name","peter").or().loops().is(3)).has("name","peter").path().by("name") }], 
+    g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX2XX_hasXname_peterX_path_byXnameX: [function({g, v1Id}) { return g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name","peter").or().loops().is(2)).has("name","peter").path().by("name") }], 
+    g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_and_loops_isX3XX_hasXname_peterX_path_byXnameX: [function({g, v1Id}) { return g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name","peter").and().loops().is(3)).has("name","peter").path().by("name") }], 
+    g_V_emitXhasXname_markoX_or_loops_isX2XX_repeatXoutX_valuesXnameX: [function({g}) { return g.V().emit(__.has("name","marko").or().loops().is(2)).repeat(__.out()).values("name") }], 
+    g_VX1X_mapXnameX: [function({g, v1Id, l}) { return g.V(v1Id).map(l) }], 
+    g_VX1X_outE_label_mapXlengthX: [function({g, v1Id, l}) { return g.V(v1Id).outE().label().map(l) }], 
+    g_VX1X_out_mapXnameX_mapXlengthX: [function({g, v1Id, l1, l2}) { return g.V(v1Id).out().map(l1).map(l2) }], 
+    g_withPath_V_asXaX_out_mapXa_nameX: [function({g, l}) { return g.withPath().V().as("a").out().map(l) }], 
+    g_withPath_V_asXaX_out_out_mapXa_name_it_nameX: [function({g, l}) { return g.withPath().V().as("a").out().out().map(l) }], 
+    g_V_mapXselectXaXX: [function({g}) { return g.V().as("a").map(__.select("a")) }], 
+    g_V_mapXconstantXnullXX: [function({g}) { return g.V().map(__.constant(null)) }], 
+    g_V_valueMap_matchXa_selectXnameX_bX: [function({g}) { return g.V().valueMap().match(__.as("a").select("name").as("b")) }], 
+    g_V_matchXa_out_bX: [function({g}) { return g.V().match(__.as("a").out().as("b")) }], 
+    g_V_matchXa_out_bX_selectXb_idX: [function({g}) { return g.V().match(__.as("a").out().as("b")).select("b").by(T.id) }], 
+    g_V_matchXa_knows_b__b_created_cX: [function({g}) { return g.V().match(__.as("a").out("knows").as("b"),__.as("b").out("created").as("c")) }], 
+    g_V_matchXb_created_c__a_knows_bX: [function({g}) { return g.V().match(__.as("b").out("created").as("c"),__.as("a").out("knows").as("b")) }], 
+    g_V_matchXa_created_b__b_0created_cX_whereXa_neq_cX_selectXa_cX: [function({g}) { return g.V().match(__.as("a").out("created").as("b"),__.as("b").in_("created").as("c")).where("a",P.neq("c")).select("a","c") }], 
+    g_V_matchXd_0knows_a__d_hasXname_vadasX__a_knows_b__b_created_cX: [function({g}) { return g.V().match(__.as("d").in_("knows").as("a"),__.as("d").has("name","vadas"),__.as("a").out("knows").as("b"),__.as("b").out("created").as("c")) }], 
+    g_V_matchXa_created_lop_b__b_0created_29_c__c_whereXrepeatXoutX_timesX2XXX: [function({g}) { return g.V().match(__.as("a").out("created").has("name","lop").as("b"),__.as("b").in_("created").has("age",29).as("c"),__.as("c").where(__.repeat(__.out()).times(2))) }], 
+    g_V_asXaX_out_asXbX_matchXa_out_count_c__b_in_count_cX: [function({g}) { return g.V().as("a").out().as("b").match(__.as("a").out().count().as("c"),__.as("b").in_().count().as("c")) }], 
+    g_V_matchXa__a_out_b__notXa_created_bXX: [function({g}) { return g.V().match(__.as("a").out().as("b"),__.not(__.as("a").out("created").as("b"))) }], 
+    g_V_matchXa_created_lop_b__b_0created_29_cX_whereXc_repeatXoutX_timesX2XX_selectXa_b_cX: [function({g}) { return g.V().match(__.as("a").out("created").has("name","lop").as("b"),__.as("b").in_("created").has("age",29).as("c")).where(__.as("c").repeat(__.out()).times(2)).select("a","b","c") }], 
+    g_V_out_out_matchXa_0created_b__b_0knows_cX_selectXcX_outXcreatedX_name: [function({g}) { return g.V().out().out().match(__.as("a").in_("created").as("b"),__.as("b").in_("knows").as("c")).select("c").out("created").values("name") }], 
+    g_V_matchXa_knows_b__b_created_c__a_created_cX_dedupXa_b_cX_selectXaX_byXnameX: [function({g}) { return g.V().match(__.as("a").out("knows").as("b"),__.as("b").out("created").as("c"),__.as("a").out("created").as("c")).dedup("a","b","c").select("a").by("name") }], 
+    g_V_matchXa_created_b__a_repeatXoutX_timesX2XX_selectXa_bX: [function({g}) { return g.V().match(__.as("a").out("created").as("b"),__.as("a").repeat(__.out()).times(2).as("b")).select("a","b") }], 
+    g_V_notXmatchXa_age_b__a_name_cX_whereXb_eqXcXX_selectXaXX_name: [function({g}) { return g.V().not(__.match(__.as("a").values("age").as("b"),__.as("a").values("name").as("c")).where("b",P.eq("c")).select("a")).values("name") }], 
+    g_V_matchXa_knows_b__andXa_created_c__b_created_c__andXb_created_count_d__a_knows_count_dXXX: [function({g}) { return g.V().match(__.as("a").out("knows").as("b"),__.and(__.as("a").out("created").as("c"),__.as("b").out("created").as("c"),__.and(__.as("b").out("created").count().as("d"),__.as("a").out("knows").count().as("d")))) }], 
+    g_V_matchXa_whereXa_neqXcXX__a_created_b__orXa_knows_vadas__a_0knows_and_a_hasXlabel_personXX__b_0created_c__b_0created_count_isXgtX1XXX_selectXa_b_cX_byXidX: [function({g}) { return g.V().match(__.where("a",P.neq("c")),__.as("a").out("created").as("b"),__.or(__.as("a").out("knows").has("name","vadas"),__.as("a").in_("knows").and().as("a").has(T.label,"person")),__.as("b").in_("created").as("c"),__.as("b").in_("created").count().is(P.gt(1))).select("a","b","c").by(T.id) }], 
+    g_V_matchXa__a_both_b__b_both_cX_dedupXa_bX: [function({g}) { return g.V().match(__.as("a").both().as("b"),__.as("b").both().as("c")).dedup("a","b") }], 
+    g_V_matchXa_knows_b__b_created_lop__b_matchXb_created_d__d_0created_cX_selectXcX_cX_selectXa_b_cX: [function({g}) { return g.V().match(__.as("a").out("knows").as("b"),__.as("b").out("created").has("name","lop"),__.as("b").match(__.as("b").out("created").as("d"),__.as("d").in_("created").as("c")).select("c").as("c")).select("a","b","c") }], 
+    g_V_matchXa_knows_b__a_created_cX: [function({g}) { return g.V().match(__.as("a").out("knows").as("b"),__.as("a").out("created").as("c")) }], 
+    g_V_matchXwhereXandXa_created_b__b_0created_count_isXeqX3XXXX__a_both_b__whereXb_inXX: [function({g}) { return g.V().match(__.where(__.and(__.as("a").out("created").as("b"),__.as("b").in_("created").count().is(P.eq(3)))),__.as("a").both().as("b"),__.where(__.as("b").in_())) }], 
+    g_V_matchXa_outEXcreatedX_order_byXweight_descX_limitX1X_inV_b__b_hasXlang_javaXX_selectXa_bX_byXnameX: [function({g}) { return g.V().match(__.as("a").outE("created").order().by("weight",Order.desc).limit(1).inV().as("b"),__.as("b").has("lang","java")).select("a","b").by("name") }], 
+    g_V_matchXa_both_b__b_both_cX_dedupXa_bX_byXlabelX: [function({g}) { return g.V().match(__.as("a").both().as("b"),__.as("b").both().as("c")).dedup("a","b").by(T.label) }], 
+    g_V_matchXa_created_b__b_0created_aX: [function({g}) { return g.V().match(__.as("a").out("created").as("b"),__.as("b").in_("created").as("a")) }], 
+    g_V_asXaX_out_asXbX_matchXa_out_count_c__orXa_knows_b__b_in_count_c__and__c_isXgtX2XXXX: [function({g}) { return g.V().as("a").out().as("b").match(__.as("a").out().count().as("c"),__.or(__.as("a").out("knows").as("b"),__.as("b").in_().count().as("c").and().as("c").is(P.gt(2)))) }], 
+    g_V_matchXa_knows_count_bX_selectXbX: [function({g}) { return g.V().match(__.as("a").out("knows").count().as("b")).select("b") }], 
+    g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX: [function({g}) { return g.V().match(__.as("a").in_("sungBy").as("b"),__.as("a").in_("writtenBy").as("c"),__.as("b").out("writtenBy").as("d"),__.as("c").out("sungBy").as("d"),__.as("d").has("name","Garcia")) }], 
+    g_V_matchXa_hasXsong_name_sunshineX__a_mapX0followedBy_weight_meanX_b__a_0followedBy_c__c_filterXweight_whereXgteXbXXX_outV_dX_selectXdX_byXnameX: [function({g}) { return g.V().match(__.as("a").has("song","name","HERE COMES SUNSHINE"),__.as("a").map(__.inE("followedBy").values("weight").mean()).as("b"),__.as("a").inE("followedBy").as("c"),__.as("c").filter(__.values("weight").where(P.gte("b"))).outV().as("d")).select("d").by("name") }], 
+    g_V_matchXa_0sungBy_b__a_0sungBy_c__b_writtenBy_d__c_writtenBy_e__d_hasXname_George_HarisonX__e_hasXname_Bob_MarleyXX: [function({g}) { return g.V().match(__.as("a").in_("sungBy").as("b"),__.as("a").in_("sungBy").as("c"),__.as("b").out("writtenBy").as("d"),__.as("c").out("writtenBy").as("e"),__.as("d").has("name","George_Harrison"),__.as("e").has("name","Bob_Marley")) }], 
+    g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__a_0sungBy_bX: [function({g}) { return g.V().match(__.as("a").has("name","Garcia"),__.as("a").in_("writtenBy").as("b"),__.as("a").in_("sungBy").as("b")) }], 
+    g_V_hasLabelXsongsX_matchXa_name_b__a_performances_cX_selectXb_cX_count: [function({g}) { return g.V().hasLabel("song").match(__.as("a").values("name").as("b"),__.as("a").values("performances").as("c")).select("b","c").count() }], 
+    g_V_matchXa_followedBy_count_isXgtX10XX_b__a_0followedBy_count_isXgtX10XX_bX_count: [function({g}) { return g.V().match(__.as("a").out("followedBy").count().is(P.gt(10)).as("b"),__.as("a").in_("followedBy").count().is(P.gt(10)).as("b")).count() }], 
+    g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_dX_whereXc_sungBy_dX_whereXd_hasXname_GarciaXX: [function({g}) { return g.V().match(__.as("a").in_("sungBy").as("b"),__.as("a").in_("writtenBy").as("c"),__.as("b").out("writtenBy").as("d")).where(__.as("c").out("sungBy").as("d")).where(__.as("d").has("name","Garcia")) }], 
+    g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__b_followedBy_c__c_writtenBy_d__whereXd_neqXaXXX: [function({g}) { return g.V().match(__.as("a").has("name","Garcia"),__.as("a").in_("writtenBy").as("b"),__.as("b").out("followedBy").as("c"),__.as("c").out("writtenBy").as("d"),__.where("d",P.neq("a"))) }], 
+    g_V_outE_mathX0_minus_itX_byXweightX: [function({g}) { return g.V().outE().math("0-_").by("weight") }], 
+    g_V_hasXageX_valueMap_mathXit_plus_itXbyXselectXageX_unfoldXX: [function({g}) { return g.V().has("age").valueMap().math("_+_").by(__.select("age").unfold()) }], 
+    g_V_asXaX_outXknowsX_asXbX_mathXa_plus_bX_byXageX: [function({g}) { return g.V().as("a").out("knows").as("b").math("a + b").by("age") }], 
+    g_withSideEffectXx_100X_V_age_mathX__plus_xX: [function({g, x}) { return g.withSideEffect("x",x).V().values("age").math("_ + x") }], 
+    g_V_asXaX_outXcreatedX_asXbX_mathXb_plus_aX_byXinXcreatedX_countX_byXageX: [function({g}) { return g.V().as("a").out("created").as("b").math("b + a").by(__.in_("created").count()).by("age") }], 
+    g_withSackX1X_injectX1X_repeatXsackXsumX_byXconstantX1XXX_timesX5X_emit_mathXsin__X_byXsackX: [function({g}) { return g.withSack(1).inject(1).repeat(__.sack(Operator.sum).by(__.constant(1))).times(5).emit().math("sin _").by(__.sack()) }], 
+    g_V_projectXa_b_cX_byXbothE_weight_sumX_byXbothE_countX_byXnameX_order_byXmathXa_div_bX_descX_selectXcX: [function({g}) { return g.V().project("a","b","c").by(__.bothE().values("weight").sum()).by(__.bothE().count()).by("name").order().by(__.math("a / b"),Order.desc).select("c") }], 
+    g_V_age_max: [function({g}) { return g.V().values("age").max() }], 
+    g_V_foo_max: [function({g}) { return g.V().values("foo").max() }], 
+    g_V_name_max: [function({g}) { return g.V().values("name").max() }], 
+    g_V_age_fold_maxXlocalX: [function({g}) { return g.V().values("age").fold().max(Scope.local) }], 
+    g_V_foo_fold_maxXlocalX: [function({g}) { return g.V().values("foo").fold().max(Scope.local) }], 
+    g_V_name_fold_maxXlocalX: [function({g}) { return g.V().values("name").fold().max(Scope.local) }], 
+    g_V_repeatXbothX_timesX5X_age_max: [function({g}) { return g.V().repeat(__.both()).times(5).values("age").max() }], 
+    g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_maxX: [function({g}) { return g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").max()) }], 
+    g_V_age_mean: [function({g}) { return g.V().values("age").mean() }], 
+    g_V_foo_mean: [function({g}) { return g.V().values("foo").mean() }], 
+    g_V_age_fold_meanXlocalX: [function({g}) { return g.V().values("age").fold().mean(Scope.local) }], 
+    g_V_foo_fold_meanXlocalX: [function({g}) { return g.V().values("foo").fold().mean(Scope.local) }], 
+    g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_meanX: [function({g}) { return g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").mean()) }], 
+    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() }], 
+    g_V_age_fold_minXlocalX: [function({g}) { return g.V().values("age").fold().min(Scope.local) }], 
+    g_V_foo_fold_minXlocalX: [function({g}) { return g.V().values("foo").fold().min(Scope.local) }], 
+    g_V_name_fold_minXlocalX: [function({g}) { return g.V().values("name").fold().min(Scope.local) }], 
+    g_V_repeatXbothX_timesX5X_age_min: [function({g}) { return g.V().repeat(__.both()).times(5).values("age").min() }], 
+    g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_minX: [function({g}) { return g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").min()) }], 
+    g_V_foo_injectX9999999999X_min: [function({g, injectVal}) { return g.V().values("foo").inject(injectVal).min() }], 
+    g_V_name_order: [function({g}) { return g.V().values("name").order() }], 
+    g_V_name_order_byXa1_b1X_byXb2_a2X: [function({g, l1, l2}) { return g.V().values("name").order().by(l1).by(l2) }], 
+    g_V_order_byXname_ascX_name: [function({g}) { return g.V().order().by("name",Order.asc).values("name") }], 
+    g_V_order_byXnameX_name: [function({g}) { return g.V().order().by("name").values("name") }], 
+    g_V_outE_order_byXweight_descX_weight: [function({g}) { return g.V().outE().order().by("weight",Order.desc).values("weight") }], 
+    g_V_order_byXname_a1_b1X_byXname_b2_a2X_name: [function({g, l1, l2}) { return g.V().order().by("name",l1).by("name",l2).values("name") }], 
+    g_V_asXaX_outXcreatedX_asXbX_order_byXshuffleX_selectXa_bX: [function({g}) { return g.V().as("a").out("created").as("b").order().by(Order.shuffle).select("a","b") }], 
+    g_V_both_hasLabelXpersonX_order_byXage_descX_limitX5X_name: [function({g}) { return g.V().both().hasLabel("person").order().by("age",Order.desc).limit(5).values("name") }], 
+    g_V_properties_order_byXkey_descX_key: [function({g}) { return g.V().properties().order().by(T.key,Order.desc).key() }], 
+    g_V_hasLabelXpersonX_order_byXvalueXageX_descX_name: [function({g, l1}) { return g.V().hasLabel("person").order().by(l1,Order.desc).values("name") }], 
+    g_V_hasLabelXpersonX_group_byXnameX_byXoutE_weight_sumX_orderXlocalX_byXvaluesX: [function({g}) { return g.V().hasLabel("person").group().by("name").by(__.outE().values("weight").sum()).order(Scope.local).by(Column.values) }], 
+    g_V_mapXbothE_weight_foldX_order_byXsumXlocalX_descX: [function({g}) { return g.V().map(__.bothE().values("weight").fold()).order().by(__.sum(Scope.local),Order.desc) }], 
+    g_V_group_byXlabelX_byXname_order_byXdescX_foldX: [function({g}) { return 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: [function({g}) { return g.V().hasLabel("person").group().by("name").by(__.outE().values("weight").sum()).unfold().order().by(Column.values,Order.desc) }], 
+    g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_descX: [function({g}) { return g.V().as("v").map(__.bothE().values("weight").fold()).sum(Scope.local).as("s").select("v","s").order().by(__.select("s"),Order.desc) }], 
+    g_V_hasLabelXpersonX_fold_orderXlocalX_byXageX: [function({g}) { return g.V().hasLabel("person").fold().order(Scope.local).by("age") }], 
+    g_V_both_hasLabelXpersonX_order_byXage_descX_name: [function({g}) { return g.V().both().hasLabel("person").order().by("age",Order.desc).values("name") }], 
+    g_V_order_byXoutE_count_descX: [function({g}) { return g.V().order().by(__.outE().count(),Order.desc) }], 
+    g_V_hasLabelXpersonX_order_byXageX: [function({g}) { return g.V().hasLabel("person").order().by("age") }], 
+    g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalues_descX_byXkeys_ascX: [function({g, l1, v1}) { return g.V(v1).hasLabel("person").map(l1).order(Scope.local).by(Column.values,Order.desc).by(Column.keys,Order.asc) }], 
+    g_VX1X_elementMap_orderXlocalX_byXkeys_descXunfold: [function({g, v1Id}) { return g.V(v1Id).elementMap().order(Scope.local).by(Column.keys,Order.desc).unfold() }], 
+    g_V_pageRank_hasXpageRankX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().pageRank().has("gremlin.pageRankVertexProgram.pageRank") }, function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().pageRank().has("gremlin.pageRankVertexProgram.pageRank") }], 
+    g_V_outXcreatedX_pageRank_withXedges_bothEX_withXpropertyName_projectRankX_withXtimes_0X_valueMapXname_projectRankX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).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: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().pageRank().order().by("gremlin.pageRankVertexProgram.pageRank",Order.desc).by("name").values("name") }], 
+    g_V_pageRank_order_byXpageRank_descX_name_limitX2X: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().pageRank().order().by("gremlin.pageRankVertexProgram.pageRank",Order.desc).values("name").limit(2) }], 
+    g_V_pageRank_withXedges_outEXknowsXX_withXpropertyName_friendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().pageRank().with_("~tinkerpop.pageRank.edges",__.outE("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: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).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: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).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: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().hasLabel("software").has("name","ripple").pageRank(1.0).with_("~tinkerpop.pageRank.edges",__.inE("created")).with_("~tinkerpop.pageRank.times",1).with_ [...]
+    g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXpropertyName_pageRankX_withXedges_inEX_withXtimes_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().out("created").group("m").by(T.label).pageRank(1.0).with_("~tinkerpop.pageRank.propertyName","pageRank").with_("~tinkerpop.pageRank.edges",__.inE()).with_("~tinkerpop.pageRank. [...]
+    g_VX1X_name_path: [function({g, v1Id}) { return g.V(v1Id).values("name").path() }], 
+    g_VX1X_out_path_byXageX_byXnameX: [function({g, v1Id}) { return g.V(v1Id).out().path().by("age").by("name") }], 
+    g_V_repeatXoutX_timesX2X_path_byXitX_byXnameX_byXlangX: [function({g}) { return g.V().repeat(__.out()).times(2).path().by().by("name").by("lang") }], 
+    g_V_out_out_path_byXnameX_byXageX: [function({g}) { return g.V().out().out().path().by("name").by("age") }], 
+    g_V_asXaX_hasXname_markoX_asXbX_hasXage_29X_asXcX_path: [function({g}) { return g.V().as("a").has("name","marko").as("b").has("age",29).as("c").path() }], 
+    g_VX1X_outEXcreatedX_inV_inE_outV_path: [function({g, v1Id}) { return g.V(v1Id).outE("created").inV().inE().outV().path() }], 
+    g_V_asXaX_out_asXbX_out_asXcX_path_fromXbX_toXcX_byXnameX: [function({g}) { return g.V().as("a").out().as("b").out().as("c").path().from_("b").to("c").by("name") }], 
+    g_V_peerPressure_hasXclusterX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().peerPressure().has("gremlin.peerPressureVertexProgram.cluster") }, function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().peerPressure().has("gremlin.peerPressureVertexProgram.cluster") }], 
+    g_V_peerPressure_withXpropertyName_clusterX_withXedges_outEXknowsXX_pageRankX1X_byXrankX_withXedges_outEXknowsX_withXtimes_2X_group_byXclusterX_byXrank_sumX_limitX100X: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().peerPressure().with_("~tinkerpop.peerPressure.propertyName","cluster").with_("~tinkerpop.peerPressure.edges",__.outE("knows")).pageRank(1.0).with_("~tinker [...]
+    g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXedges_outEX_withyXpropertyName_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().has("name","ripple").in_("created").peerPressure().with_("~tinkerpop.peerPressure.edges",__.outE()).with_("~tinkerpop.peerPressure.propertyName","cluster").repeat(__ [...]
+    g_V_hasLabelXpersonX_projectXa_bX_byXoutE_countX_byXageX: [function({g}) { return g.V().hasLabel("person").project("a","b").by(__.outE().count()).by("age") }], 
+    g_V_outXcreatedX_projectXa_bX_byXnameX_byXinXcreatedX_countX_order_byXselectXbX__descX_selectXaX: [function({g}) { return g.V().out("created").project("a","b").by("name").by(__.in_("created").count()).order().by(__.select("b"),Order.desc).select("a") }], 
+    g_V_valueMap_projectXxX_byXselectXnameXX: [function({g}) { return g.V().valueMap().project("x").by(__.select("name")) }], 
+    g_V_hasXageX_propertiesXnameX: [function({g}) { return g.V().has("age").properties("name").value() }], 
+    g_V_hasXageX_propertiesXname_ageX_value: [function({g}) { return g.V().has("age").properties("name","age").value() }], 
+    g_V_hasXageX_propertiesXage_nameX_value: [function({g}) { return g.V().has("age").properties("age","name").value() }], 
+    get_g_VX1X_asXaX_outXknowsX_asXbX_selectXa_bX: [function({g, v1Id}) { return g.V(v1Id).as("a").out("knows").as("b").select("a","b") }], 
+    g_VX1X_asXaX_outXknowsX_asXbX_selectXa_bX_byXnameX: [function({g, v1Id}) { return g.V(v1Id).as("a").out("knows").as("b").select("a","b").by("name") }], 
+    g_VX1X_asXaX_outXknowsX_asXbX_selectXaX: [function({g, v1Id}) { return g.V(v1Id).as("a").out("knows").as("b").select("a") }], 
+    g_VX1X_asXaX_outXknowsX_asXbX_selectXaX_byXnameX: [function({g, v1Id}) { return g.V(v1Id).as("a").out("knows").as("b").select("a").by("name") }], 
+    g_V_asXaX_out_asXbX_selectXa_bX_byXnameX: [function({g}) { return g.V().as("a").out().as("b").select("a","b").by("name") }], 
+    g_V_asXaX_out_aggregateXxX_asXbX_selectXa_bX_byXnameX: [function({g}) { return g.V().as("a").out().aggregate("x").as("b").select("a","b").by("name") }], 
+    g_V_asXaX_name_order_asXbX_selectXa_bX_byXnameX_by_XitX: [function({g}) { return g.V().as("a").values("name").order().as("b").select("a","b").by("name").by() }], 
+    g_V_hasXname_gremlinX_inEXusesX_order_byXskill_ascX_asXaX_outV_asXbX_selectXa_bX_byXskillX_byXnameX: [function({g}) { return g.V().has("name","gremlin").inE("uses").order().by("skill",Order.asc).as("a").outV().as("b").select("a","b").by("skill").by("name") }], 
+    g_V_hasXname_isXmarkoXX_asXaX_selectXaX: [function({g}) { return g.V().has("name",__.is("marko")).as("a").select("a") }], 
+    g_V_label_groupCount_asXxX_selectXxX: [function({g}) { return g.V().label().groupCount().as("x").select("x") }], 
+    g_V_hasLabelXpersonX_asXpX_mapXbothE_label_groupCountX_asXrX_selectXp_rX: [function({g}) { return g.V().hasLabel("person").as("p").map(__.bothE().label().groupCount()).as("r").select("p","r") }], 
+    g_V_chooseXoutE_count_isX0X__asXaX__asXbXX_chooseXselectXaX__selectXaX__selectXbXX: [function({g, zero}) { return g.V().choose(__.outE().count().is(zero),__.as("a"),__.as("b")).choose(__.select("a"),__.select("a"),__.select("b")) }], 
+    g_VX1X_groupXaX_byXconstantXaXX_byXnameX_selectXaX_selectXaX: [function({g, v1Id}) { return g.V(v1Id).group("a").by(__.constant("a")).by(__.values("name")).barrier().select("a").select("a") }], 
+    g_VX1X_asXhereX_out_selectXhereX: [function({g, v1Id}) { return g.V(v1Id).as("here").out().select("here") }], 
+    g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX: [function({g, v4Id}) { return g.V(v4Id).as("here").out().select("here") }], 
+    g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX_name: [function({g, v4Id}) { return g.V(v4Id).out().as("here").has("lang","java").select("here").values("name") }], 
+    g_VX1X_outE_asXhereX_inV_hasXname_vadasX_selectXhereX: [function({g, v1Id}) { return g.V(v1Id).outE().as("here").inV().has("name","vadas").select("here") }], 
+    g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_selectXhereX: [function({g, v1Id}) { return g.V(v1Id).outE("knows").has("weight",1.0).as("here").inV().has("name","josh").select("here") }], 
+    g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_selectXhereX: [function({g, v1Id}) { return g.V(v1Id).outE("knows").as("here").has("weight",1.0).as("fake").inV().has("name","josh").select("here") }], 
+    g_V_asXhereXout_name_selectXhereX: [function({g}) { return g.V().as("here").out().values("name").select("here") }], 
+    g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_selectXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_selectXprojectXX_groupCount_byXnameX: [function({g}) { return g.V().out("created").union(__.as("project").in_("created").has("name","marko").select("project"),__.as("project").in_("created").in_("knows").has("name","marko").select("project")).groupCount().by("name") }], 
+    g_V_untilXout_outX_repeatXin_asXaXX_selectXaX_byXtailXlocalX_nameX: [function({g}) { return g.V().until(__.out().out()).repeat(__.in_().as("a")).select("a").by(__.tail(Scope.local).values("name")) }], 
+    g_V_outE_weight_groupCount_selectXkeysX_unfold: [function({g}) { return g.V().outE().values("weight").groupCount().select(Column.keys).unfold() }], 
+    g_V_hasLabelXsoftwareX_asXnameX_asXlanguageX_asXcreatorsX_selectXname_language_creatorsX_byXnameX_byXlangX_byXinXcreatedX_name_fold_orderXlocalXX: [function({g}) { return g.V().hasLabel("software").as("name").as("language").as("creators").select("name","language","creators").by("name").by("lang").by(__.in_("created").values("name").fold().order(Scope.local)) }], 
+    g_V_outE_weight_groupCount_unfold_selectXkeysX_unfold: [function({g}) { return g.V().outE().values("weight").groupCount().unfold().select(Column.keys).unfold() }], 
+    g_V_outE_weight_groupCount_unfold_selectXvaluesX_unfold: [function({g}) { return g.V().outE().values("weight").groupCount().unfold().select(Column.values).unfold() }], 
+    g_V_untilXout_outX_repeatXin_asXaX_in_asXbXX_selectXa_bX_byXnameX: [function({g}) { return g.V().until(__.out().out()).repeat(__.in_().as("a").in_().as("b")).select("a","b").by("name") }], 
+    g_V_outE_weight_groupCount_selectXvaluesX_unfold: [function({g}) { return g.V().outE().values("weight").groupCount().select(Column.values).unfold() }], 
+    g_VX1X_asXaX_outXknowsX_asXbX_selectXa_bX: [function({g, v1Id}) { return g.V(v1Id).as("a").out("knows").as("b").select("a","b") }], 
+    g_V_asXaX_whereXoutXknowsXX_selectXaX: [function({g}) { return g.V().as("a").where(__.out("knows")).select("a") }], 
+    g_VX1X_asXaX_repeatXout_asXaXX_timesX2X_selectXfirst_aX: [function({g, v1Id}) { return g.V(v1Id).as("a").repeat(__.out().as("a")).times(2).select(Pop.first,"a") }], 
+    g_V_asXaX_outXknowsX_asXbX_localXselectXa_bX_byXnameXX: [function({g}) { return g.V().as("a").out("knows").as("b").local(__.select("a","b").by("name")) }], 
+    g_VX1X_asXaX_repeatXout_asXaXX_timesX2X_selectXlast_aX: [function({g, v1Id}) { return g.V(v1Id).as("a").repeat(__.out().as("a")).times(2).select(Pop.last,"a") }], 
+    g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_inV_hasXname_joshX_selectXhereX: [function({g, v1Id}) { return g.V(v1Id).outE("knows").as("here").has("weight",1.0).inV().has("name","josh").select("here") }], 
+    g_V_asXaX_hasXname_markoX_asXbX_asXcX_selectXa_b_cX_by_byXnameX_byXageX: [function({g}) { return g.V().as("a").has("name","marko").as("b").as("c").select("a","b","c").by().by("name").by("age") }], 
+    g_V_outE_weight_groupCount_selectXvaluesX_unfold_groupCount_selectXvaluesX_unfold: [function({g}) { return g.V().outE().values("weight").groupCount().select(Column.values).unfold().groupCount().select(Column.values).unfold() }], 
+    g_V_asXaX_groupXmX_by_byXbothE_countX_barrier_selectXmX_selectXselectXaXX: [function({g}) { return g.V().as("a").group("m").by().by(__.bothE().count()).barrier().select("m").select(__.select("a")) }], 
+    g_V_asXaX_groupXmX_by_byXbothE_countX_barrier_selectXmX_selectXselectXaXX_byXmathX_plus_XX: [function({g}) { return g.V().as("a").group("m").by().by(__.bothE().count()).barrier().select("m").select(__.select("a")).by(__.math("_+_")) }], 
+    g_V_asXaX_outXknowsX_asXaX_selectXall_constantXaXX: [function({g}) { return g.V().as("a").out("knows").as("a").select(Pop.all,__.constant("a")) }], 
+    g_V_selectXaX: [function({g}) { return g.V().select("a") }], 
+    g_V_selectXaX_count: [function({g}) { return g.V().select("a").count() }], 
+    g_V_selectXa_bX: [function({g}) { return g.V().select("a","b") }], 
+    g_V_valueMap_selectXaX: [function({g}) { return g.V().valueMap().select("a") }], 
+    g_V_valueMap_selectXa_bX: [function({g}) { return g.V().valueMap().select("a","b") }], 
+    g_V_selectXfirst_aX: [function({g}) { return g.V().select(Pop.first,"a") }], 
+    g_V_selectXfirst_a_bX: [function({g}) { return g.V().select(Pop.first,"a","b") }], 
+    g_V_valueMap_selectXfirst_aX: [function({g}) { return g.V().valueMap().select(Pop.first,"a") }], 
+    g_V_valueMap_selectXfirst_a_bX: [function({g}) { return g.V().valueMap().select(Pop.first,"a","b") }], 
+    g_V_selectXlast_aX: [function({g}) { return g.V().select(Pop.last,"a") }], 
+    g_V_selectXlast_a_bX: [function({g}) { return g.V().select(Pop.last,"a","b") }], 
+    g_V_valueMap_selectXlast_aX: [function({g}) { return g.V().valueMap().select(Pop.last,"a") }], 
+    g_V_valueMap_selectXlast_a_bX: [function({g}) { return g.V().valueMap().select(Pop.last,"a","b") }], 
+    g_V_selectXall_aX: [function({g}) { return g.V().select(Pop.all,"a") }], 
+    g_V_selectXall_a_bX: [function({g}) { return g.V().select(Pop.all,"a","b") }], 
+    g_V_valueMap_selectXall_aX: [function({g}) { return g.V().valueMap().select(Pop.all,"a") }], 
+    g_V_valueMap_selectXall_a_bX: [function({g}) { return g.V().valueMap().select(Pop.all,"a","b") }], 
+    g_V_asXa_bX_out_asXcX_path_selectXkeysX: [function({g}) { return g.V().as("a","b").out().as("c").path().select(Column.keys) }, function({g}) { return g.V().as("a","b").out().as("c").path().select(Column.keys) }], 
+    g_V_hasXperson_name_markoX_barrier_asXaX_outXknows_selectXaX: [function({g}) { return g.V().has("person","name","marko").barrier().as("a").out("knows").select("a") }], 
+    g_V_hasXperson_name_markoX_elementMapXnameX_asXaX_unionXidentity_identityX_selectXaX_selectXnameX: [function({g}) { return g.V().has("person","name","marko").elementMap("name").as("a").union(__.identity(),__.identity()).select("a").select("name") }], 
+    g_V_hasXperson_name_markoX_count_asXaX_unionXidentity_identityX_selectXaX: [function({g}) { return g.V().has("person","name","marko").count().as("a").union(__.identity(),__.identity()).select("a") }], 
+    g_V_hasXperson_name_markoX_path_asXaX_unionXidentity_identityX_selectXaX_unfold: [function({g}) { return g.V().has("person","name","marko").path().as("a").union(__.identity(),__.identity()).select("a").unfold() }], 
+    g_EX11X_propertiesXweightX_asXaX_selectXaX_byXkeyX: [function({g, e11Id}) { return g.E(e11Id).properties("weight").as("a").select("a").by(T.key) }], 
+    g_EX11X_propertiesXweightX_asXaX_selectXaX_byXvalueX: [function({g, e11Id}) { return g.E(e11Id).properties("weight").as("a").select("a").by(T.value) }], 
+    g_V_shortestPath: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().identity().shortestPath() }], 
+    g_V_both_dedup_shortestPath: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().both().dedup().shortestPath() }], 
+    g_V_shortestPath_edgesIncluded: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().identity().shortestPath().with_("~tinkerpop.shortestPath.includeEdges") }], 
+    g_V_shortestPath_directionXINX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().identity().shortestPath().with_("~tinkerpop.shortestPath.edges",Direction.IN) }], 
+    g_V_shortestPath_edgesXoutEX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().identity().shortestPath().with_("~tinkerpop.shortestPath.edges",__.outE()) }], 
+    g_V_shortestPath_edgesIncluded_edgesXoutEX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().identity().shortestPath().with_("~tinkerpop.shortestPath.includeEdges").with_("~tinkerpop.shortestPath.edges",__.outE()) }], 
+    g_V_hasXname_markoX_shortestPath: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().has("name","marko").shortestPath() }], 
+    g_V_shortestPath_targetXhasXname_markoXX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().identity().shortestPath().with_("~tinkerpop.shortestPath.target",__.has("name","marko")) }], 
+    g_V_shortestPath_targetXvaluesXnameX_isXmarkoXX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().identity().shortestPath().with_("~tinkerpop.shortestPath.target",__.values("name").is("marko")) }], 
+    g_V_hasXname_markoX_shortestPath_targetXhasLabelXsoftwareXX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().has("name","marko").shortestPath().with_("~tinkerpop.shortestPath.target",__.hasLabel("software")) }], 
+    g_V_hasXname_markoX_shortestPath_targetXhasXname_joshXX_distanceXweightX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().has("name","marko").shortestPath().with_("~tinkerpop.shortestPath.target",__.has("name","josh")).with_("~tinkerpop.shortestPath.distance","weight") }], 
+    g_V_hasXname_danielX_shortestPath_targetXhasXname_stephenXX_edgesXbothEXusesXX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().has("name","daniel").shortestPath().with_("~tinkerpop.shortestPath.target",__.has("name","stephen")).with_("~tinkerpop.shortestPath.edges",__.bothE("uses")) }], 
+    g_V_hasXsong_name_MIGHT_AS_WELLX_shortestPath_targetXhasXsong_name_MAYBE_YOU_KNOW_HOW_I_FEELXX_edgesXoutEXfollowedByXX_distanceXweightX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().has("song","name","MIGHT AS WELL").shortestPath().with_("~tinkerpop.shortestPath.target",__.has("song","name","MAYBE YOU KNOW HOW I FEEL")).with_("~tinkerpop.shortestPath.edges",__.outE(" [...]
+    g_V_hasXname_markoX_shortestPath_maxDistanceX1X: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().has("name","marko").shortestPath().with_("~tinkerpop.shortestPath.maxDistance",1) }], 
+    g_V_hasXname_vadasX_shortestPath_distanceXweightX_maxDistanceX1_3X: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().has("name","vadas").shortestPath().with_("~tinkerpop.shortestPath.distance","weight").with_("~tinkerpop.shortestPath.maxDistance",1.3) }], 
+    g_V_age_sum: [function({g}) { return g.V().values("age").sum() }], 
+    g_V_foo_sum: [function({g}) { return g.V().values("foo").sum() }], 
+    g_V_age_fold_sumXlocalX: [function({g}) { return g.V().values("age").fold().sum(Scope.local) }], 
+    g_V_foo_fold_sumXlocalX: [function({g}) { return g.V().values("foo").fold().sum(Scope.local) }], 
+    g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_sumX: [function({g}) { return g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").sum()) }], 
+    g_V_localXoutE_foldX_unfold: [function({g}) { return g.V().local(__.outE().fold()).unfold() }], 
+    g_V_valueMap_unfold_mapXkeyX: [function({g, l}) { return g.V().valueMap().unfold().map(l) }], 
+    g_VX1X_repeatXboth_simplePathX_untilXhasIdX6XX_path_byXnameX_unfold: [function({g, v1Id, v6Id}) { return g.V(v1Id).repeat(__.both().simplePath()).until(__.hasId(v6Id)).path().by("name").unfold() }], 
+    g_V_valueMap: [function({g}) { return g.V().valueMap() }], 
+    g_V_valueMapXtrueX: [function({g}) { return g.V().valueMap(true) }], 
+    g_V_valueMap_withXtokensX: [function({g}) { return g.V().valueMap().with_("~tinkerpop.valueMap.tokens") }], 
+    g_V_valueMapXname_ageX: [function({g}) { return g.V().valueMap("name","age") }], 
+    g_V_valueMapXtrue_name_ageX: [function({g}) { return g.V().valueMap(true,"name","age") }], 
+    g_V_valueMapXname_ageX_withXtokensX: [function({g}) { return g.V().valueMap("name","age").with_("~tinkerpop.valueMap.tokens") }], 
+    g_V_valueMapXname_ageX_withXtokens_labelsX_byXunfoldX: [function({g}) { return g.V().valueMap("name","age").with_("~tinkerpop.valueMap.tokens",2).by(__.unfold()) }], 
+    g_V_valueMapXname_ageX_withXtokens_idsX_byXunfoldX: [function({g}) { return g.V().valueMap("name","age").with_("~tinkerpop.valueMap.tokens",1).by(__.unfold()) }], 
+    g_VX1X_outXcreatedX_valueMap: [function({g, v1Id}) { return g.V(v1Id).out("created").valueMap() }], 
+    g_V_hasLabelXpersonX_filterXoutEXcreatedXX_valueMapXtrueX: [function({g}) { return g.V().hasLabel("person").filter(__.outE("created")).valueMap(true) }], 
+    g_V_hasLabelXpersonX_filterXoutEXcreatedXX_valueMap_withXtokensX: [function({g}) { return g.V().hasLabel("person").filter(__.outE("created")).valueMap().with_("~tinkerpop.valueMap.tokens") }], 
+    g_VX1X_valueMapXname_locationX_byXunfoldX_by: [function({g, v1Id}) { return g.V(v1Id).valueMap("name","location").by(__.unfold()).by() }], 
+    g_VXlistX1_2_3XX_name: [function({g, vx}) { return g.V(vx).values("name") }], 
+    g_VXlistXv1_v2_v3XX_name: [function({g, vx}) { return g.V(vx).values("name") }], 
+    g_V: [function({g}) { return g.V() }], 
+    g_VXv1X_out: [function({g, v1}) { return g.V(v1).out() }], 
+    g_VX1X_out: [function({g, v1Id}) { return g.V(v1Id).out() }], 
+    g_VX2X_in: [function({g, v2Id}) { return g.V(v2Id).in_() }], 
+    g_VX4X_both: [function({g, v4Id}) { return g.V(v4Id).both() }], 
+    g_E: [function({g}) { return g.E() }], 
+    g_EX11X: [function({g, e11Id}) { return g.E(e11Id) }], 
+    g_EX11AsStringX: [function({g, e11Id}) { return g.E(e11Id) }], 
+    g_EXe11X: [function({g, e11}) { return g.E(e11) }], 
+    g_EXe7_e11X: [function({g, e7, e11}) { return g.E(e7,e11) }], 
+    g_EXlistXe7_e11XX: [function({g, l}) { return g.E(l) }], 
+    g_VX1X_outE: [function({g, v1Id}) { return g.V(v1Id).outE() }], 
+    g_VX2X_outE: [function({g, v2Id}) { return g.V(v2Id).inE() }], 
+    g_VX4X_bothEXcreatedX: [function({g, v4Id}) { return g.V(v4Id).bothE("created") }], 
+    g_VX4X_bothE: [function({g, v4Id}) { return g.V(v4Id).bothE() }], 
+    g_VX1X_outE_inV: [function({g, v1Id}) { return g.V(v1Id).both() }], 
+    g_VX2X_inE_outV: [function({g, v2Id}) { return g.V(v2Id).inE().outV() }], 
+    g_V_outE_hasXweight_1X_outV: [function({g}) { return g.V().outE().has("weight",1.0).outV() }], 
+    g_V_out_outE_inV_inE_inV_both_name: [function({g}) { return g.V().out().outE().inV().inE().inV().both().values("name") }], 
+    g_VX1X_outEXknowsX_bothV_name: [function({g, v1Id}) { return g.V(v1Id).outE("knows").bothV().values("name") }], 
+    g_VX1X_outE_otherV: [function({g, v1Id}) { return g.V(v1Id).outE().otherV() }], 
+    g_VX4X_bothE_otherV: [function({g, v4Id}) { return g.V(v4Id).bothE().otherV() }], 
+    g_VX4X_bothE_hasXweight_lt_1X_otherV: [function({g, v4Id}) { return g.V(v4Id).bothE().has("weight",P.lt(1.0)).otherV() }], 
+    g_VX2X_inE: [function({g, v2Id}) { return g.V(v2Id).bothE() }], 
+    get_g_VX1X_outE_otherV: [function({g, v1Id}) { return g.V(v1Id).outE().otherV() }], 
+    g_VX1X_outXknowsX: [function({g, v1Id}) { return g.V(v1Id).out("knows") }], 
+    g_VX1AsStringX_outXknowsX: [function({g, v1Id}) { return g.V(v1Id).out("knows") }], 
+    g_VX1X_outXknows_createdX: [function({g, v1Id}) { return g.V(v1Id).out("knows","created") }], 
+    g_VX1X_outEXknowsX_inV: [function({g, v1Id}) { return g.V(v1Id).outE("knows").inV() }], 
+    g_VX1X_outEXknows_createdX_inV: [function({g, v1Id}) { return g.V(v1Id).outE("knows","created").inV() }], 
+    g_V_out_out: [function({g}) { return g.V().out().out() }], 
+    g_VX1X_out_out_out: [function({g, v1Id}) { return g.V(v1Id).out().out().out() }], 
+    g_VX1X_out_name: [function({g, v1Id}) { return g.V(v1Id).out().values("name") }], 
+    g_VX1X_to_XOUT_knowsX: [function({g, v1Id}) { return g.V(v1Id).to(Direction.OUT,"knows") }], 
+    g_VX1_2_3_4X_name: [function({g, v1Id, v2Id, v3Id, v4Id}) { return g.V(v1Id,v2Id,v3Id,v4Id).values("name") }], 
+    g_V_hasLabelXpersonX_V_hasLabelXsoftwareX_name: [function({g}) { return g.V().hasLabel("person").V().hasLabel("software").values("name") }], 
+    g_V_hasLabelXloopsX_bothEXselfX: [function({g}) { return g.V().hasLabel("loops").bothE("self") }], 
+    g_V_hasLabelXloopsX_bothXselfX: [function({g}) { return g.V().hasLabel("loops").both("self") }], 
+    g_V_valueXnameX_aggregateXxX_capXxX: [function({g}) { return g.V().values("name").aggregate("x").cap("x") }], 
+    g_V_valueXnameX_aggregateXglobal_xX_capXxX: [function({g}) { return g.V().values("name").aggregate(Scope.global,"x").cap("x") }], 
+    g_V_aggregateXxX_byXnameX_capXxX: [function({g}) { return g.V().aggregate("x").by("name").cap("x") }], 
+    g_V_out_aggregateXaX_path: [function({g}) { return g.V().out().aggregate("a").path() }], 
+    g_V_hasLabelXpersonX_aggregateXxX_byXageX_capXxX_asXyX_selectXyX: [function({g}) { return g.V().hasLabel("person").aggregate("x").by("age").cap("x").as("y").select("y") }], 
+    g_V_aggregateXlocal_a_nameX_out_capXaX: [function({g}) { return g.V().aggregate(Scope.local,"a").by("name").out().cap("a") }], 
+    g_VX1X_aggregateXlocal_aX_byXnameX_out_aggregateXlocal_aX_byXnameX_name_capXaX: [function({g, v1Id}) { return g.V(v1Id).aggregate(Scope.local,"a").by("name").out().aggregate(Scope.local,"a").by("name").values("name").cap("a") }], 
+    g_withSideEffectXa_setX_V_both_name_aggregateXlocal_aX_capXaX: [function({g, initial}) { return g.withSideEffect("a",initial).V().both().values("name").aggregate(Scope.local,"a").cap("a") }], 
+    g_V_aggregateXlocal_aX_byXoutEXcreatedX_countX_out_out_aggregateXlocal_aX_byXinEXcreatedX_weight_sumX: [function({g}) { return g.V().aggregate(Scope.local,"a").by(__.outE("created").count()).out().out().aggregate(Scope.local,"a").by(__.inE("created").values("weight").sum()).cap("a") }], 
+    g_V_group_byXnameX: [function({g}) { return g.V().group().by("name") }], 
+    g_V_group_byXageX: [function({g}) { return g.V().group().by("age") }], 
+    g_V_group_byXnameX_by: [function({g}) { return g.V().group().by("name").by() }], 
+    g_V_groupXaX_byXnameX_capXaX: [function({g}) { return g.V().group("a").by("name").cap("a") }], 
+    g_V_hasXlangX_groupXaX_byXlangX_byXnameX_out_capXaX: [function({g}) { return g.V().has("lang").group("a").by("lang").by("name").out().cap("a") }], 
+    g_V_hasXlangX_group_byXlangX_byXcountX: [function({g}) { return g.V().has("lang").group().by("lang").by(__.count()) }], 
+    g_V_repeatXout_groupXaX_byXnameX_byXcountX_timesX2X_capXaX: [function({g}) { return g.V().repeat(__.out().group("a").by("name").by(__.count())).times(2).cap("a") }], 
+    g_V_group_byXoutE_countX_byXnameX: [function({g}) { return g.V().group().by(__.outE().count()).by("name") }], 
+    g_V_groupXaX_byXlabelX_byXoutE_weight_sumX_capXaX: [function({g}) { return g.V().group("a").by(T.label).by(__.outE().values("weight").sum()).cap("a") }], 
+    g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX: [function({g}) { return g.V().repeat(__.both("followedBy")).times(2).group().by("songType").by(__.count()) }], 
+    g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX: [function({g}) { return g.V().repeat(__.both("followedBy")).times(2).group("a").by("songType").by(__.count()).cap("a") }], 
+    g_V_group_byXname_substring_1X_byXconstantX1XX: [function({g, l1}) { return g.V().group().by(l1).by(__.constant(1)) }], 
+    g_V_groupXaX_byXname_substring_1X_byXconstantX1XX_capXaX: [function({g, l1}) { return g.V().group("a").by(l1).by(__.constant(1)).cap("a") }], 
+    g_V_out_group_byXlabelX_selectXpersonX_unfold_outXcreatedX_name_limitX2X: [function({g}) { return g.V().out().group().by(T.label).select("person").unfold().out("created").values("name").limit(2) }], 
+    g_V_hasLabelXsongX_group_byXnameX_byXproperties_groupCount_byXlabelXX: [function({g}) { return g.V().hasLabel("song").group().by("name").by(__.properties().groupCount().by(T.label)) }], 
+    g_V_hasLabelXsongX_groupXaX_byXnameX_byXproperties_groupCount_byXlabelXX_out_capXaX: [function({g}) { return g.V().hasLabel("song").group("a").by("name").by(__.properties().groupCount().by(T.label)).out().cap("a") }], 
+    g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX: [function({g}) { return g.V().out("followedBy").group().by("songType").by(__.bothE().group().by(T.label).by(__.values("weight").sum())) }], 
+    g_V_groupXmX_byXnameX_byXinXknowsX_nameX_capXmX: [function({g}) { return g.V().group("m").by("name").by(__.in_("knows").values("name")).cap("m") }], 
+    g_V_group_byXlabelX_byXbothE_groupXaX_byXlabelX_byXweight_sumX_weight_sumX: [function({g}) { return g.V().group().by(T.label).by(__.bothE().group("a").by(T.label).by(__.values("weight").sum()).values("weight").sum()) }], 
+    g_withSideEffectXa__marko_666_noone_blahX_V_groupXaX_byXnameX_byXoutE_label_foldX_capXaX: [function({g, m}) { return g.withSideEffect("a",m).V().group("a").by("name").by(__.outE().label().fold()).cap("a") }], 
+    g_V_hasLabelXpersonX_asXpX_outXcreatedX_group_byXnameX_byXselectXpX_valuesXageX_sumX: [function({g}) { return g.V().hasLabel("person").as("p").out("created").group().by("name").by(__.select("p").values("age").sum()) }], 
+    g_V_hasLabelXpersonX_asXpX_outXcreatedX_groupXaX_byXnameX_byXselectXpX_valuesXageX_sumX_capXaX: [function({g}) { return g.V().hasLabel("person").as("p").out("created").group("a").by("name").by(__.select("p").values("age").sum()).cap("a") }], 
+    g_V_group_byXlabelX_byXlabel_countX: [function({g}) { return g.V().group().by(__.label()).by(__.label().count()) }], 
+    g_V_groupXmX_byXlabelX_byXlabel_countX_capXmX: [function({g}) { return g.V().group("m").by(__.label()).by(__.label().count()).cap("m") }], 
+    g_V_outXcreatedX_groupCount_byXnameX: [function({g}) { return g.V().out("created").groupCount().by("name") }], 
+    g_V_outXcreatedX_name_groupCount: [function({g}) { return g.V().out("created").values("name").groupCount() }], 
+    g_V_outXcreatedX_groupCountXaX_byXnameX_capXaX: [function({g}) { return g.V().out("created").groupCount("a").by("name").cap("a") }], 
+    g_V_outXcreatedX_name_groupCountXaX_capXaX: [function({g}) { return g.V().out("created").values("name").groupCount("a").cap("a") }], 
+    g_V_repeatXout_groupCountXaX_byXnameXX_timesX2X_capXaX: [function({g}) { return g.V().repeat(__.out().groupCount("a").by("name")).times(2).cap("a") }], 
+    g_V_both_groupCountXaX_byXlabelX_asXbX_barrier_whereXselectXaX_selectXsoftwareX_isXgtX2XXX_selectXbX_name: [function({g}) { return g.V().both().groupCount("a").by(T.label).as("b").barrier().where(__.select("a").select("software").is(P.gt(2))).select("b").values("name") }], 
+    g_V_unionXoutXknowsX__outXcreatedX_inXcreatedXX_groupCount_selectXvaluesX_unfold_sum: [function({g}) { return g.V().union(__.out("knows"),__.out("created").in_("created")).groupCount().select(Column.values).unfold().sum() }], 
+    g_V_hasXnoX_groupCount: [function({g}) { return g.V().has("no").groupCount() }], 
+    g_V_hasXnoX_groupCountXaX_capXaX: [function({g}) { return g.V().has("no").groupCount("a").cap("a") }], 
+    g_V_unionXrepeatXoutX_timesX2X_groupCountXmX_byXlangXX__repeatXinX_timesX2X_groupCountXmX_byXnameXX_capXmX: [function({g}) { return g.V().union(__.repeat(__.out()).times(2).groupCount("m").by("lang"),__.repeat(__.in_()).times(2).groupCount("m").by("name")).cap("m") }], 
+    g_V_outXcreatedX_groupCountXxX_capXxX: [function({g}) { return g.V().out("created").groupCount("x").cap("x") }], 
+    g_V_groupCount_byXbothE_countX: [function({g}) { return g.V().groupCount().by(__.bothE().count()) }], 
+    g_V_both_groupCountXaX_out_capXaX_selectXkeysX_unfold_both_groupCountXaX_capXaX: [function({g}) { return g.V().both().groupCount("a").out().cap("a").select(Column.keys).unfold().both().groupCount("a").cap("a") }], 
+    g_VX1X_out_injectXv2X_name: [function({g, v1Id, v2}) { return g.V(v1Id).out().inject(v2).values("name") }], 
+    g_VX1X_out_name_injectXdanielX_asXaX_mapXlengthX_path: [function({g, v1Id, c}) { return g.V(v1Id).out().values("name").inject("daniel").as("a").map(c).path() }], 
+    g_VX1X_injectXg_VX4XX_out_name: [function({g, v1Id, v4}) { return g.V(v1Id).inject(v4).out().values("name") }], 
+    g_injectXnull_1_3_nullX: [function({g}) { return g.inject(null,1,3,null) }], 
+    g_injectX10_20_null_20_10_10X_groupCountXxX_dedup_asXyX_projectXa_bX_by_byXselectXxX_selectXselectXyXXX: [function({g}) { return g.inject(10,20,null,20,10,10).groupCount("x").dedup().as("y").project("a","b").by().by(__.select("x").select(__.select("y"))) }], 
+    g_injectXname_marko_age_nullX_selectXname_ageX: [function({g, m}) { return g.inject(m).select("name","age") }], 
+    g_io_readXkryoX: [function({g}) { return g.io("data/tinkerpop-modern.kryo").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }], 
+    g_io_read_withXreader_gryoX: [function({g}) { return g.io("data/tinkerpop-modern.kryo").with_("~tinkerpop.io.reader","gryo").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }], 
+    g_io_readXgraphsonX: [function({g}) { return g.io("data/tinkerpop-modern.json").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }], 
+    g_io_read_withXreader_graphsonX: [function({g}) { return g.io("data/tinkerpop-modern.json").with_("~tinkerpop.io.reader","graphson").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }], 
+    g_io_readXgraphmlX: [function({g}) { return g.io("data/tinkerpop-modern.xml").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }], 
+    g_io_read_withXreader_graphmlX: [function({g}) { return g.io("data/tinkerpop-modern.xml").with_("~tinkerpop.io.reader","graphml").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }], 
+    g_withSackXhelloX_V_outE_sackXassignX_byXlabelX_inV_sack: [function({g}) { return g.withSack("hello").V().outE().sack(Operator.assign).by(T.label).inV().sack() }], 
+    g_withSackX0X_V_outE_sackXsumX_byXweightX_inV_sack_sum: [function({g}) { return g.withSack(0.0).V().outE().sack(Operator.sum).by("weight").inV().sack().sum() }], 
+    g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack: [function({g}) { return g.withSack(0.0).V().repeat(__.outE().sack(Operator.sum).by("weight").inV()).times(2).sack() }], 
+    g_withBulkXfalseX_withSackX1_sumX_VX1X_localXoutEXknowsX_barrierXnormSackX_inVX_inXknowsX_barrier_sack: [function({g, v1Id}) { return g.withBulk(false).withSack(1.0,Operator.sum).V(v1Id).local(__.outE("knows").barrier(Barrier.normSack).inV()).in_("knows").barrier().sack() }], 
+    g_withBulkXfalseX_withSackX1_sumX_V_out_barrier_sack: [function({g}) { return g.withBulk(false).withSack(1,Operator.sum).V().out().barrier().sack() }], 
+    g_withSackX1_sumX_VX1X_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack: [function({g, v1Id}) { return g.withSack(1.0,Operator.sum).V(v1Id).local(__.out("knows").barrier(Barrier.normSack)).in_("knows").barrier().sack() }], 
+    g_V_hasXageX_groupCountXaX_byXnameX_out_capXaX: [function({g}) { return g.V().has("age").groupCount("a").by("name").out().cap("a") }], 
+    g_V_storeXa_nameX_out_capXaX: [function({g}) { return g.V().store("a").by("name").out().cap("a") }], 
+    g_VX1X_storeXaX_byXnameX_out_storeXaX_byXnameX_name_capXaX: [function({g, v1Id}) { return g.V(v1Id).store("a").by("name").out().store("a").by("name").values("name").cap("a") }], 
+    g_withSideEffectXa_setX_V_both_name_storeXaX_capXaX: [function({g, initial}) { return g.withSideEffect("a",initial).V().both().values("name").store("a").cap("a") }], 
+    g_V_storeXaX_byXoutEXcreatedX_countX_out_out_storeXaX_byXinEXcreatedX_weight_sumX: [function({g}) { return g.V().store("a").by(__.outE("created").count()).out().out().store("a").by(__.inE("created").values("weight").sum()).cap("a") }], 
+}
+
+exports.gremlin = gremlins
diff --git a/gremlin-python/build/generate.groovy b/gremlin-python/build/generate.groovy
index ca17720..05507d5 100644
--- a/gremlin-python/build/generate.groovy
+++ b/gremlin-python/build/generate.groovy
@@ -41,7 +41,7 @@ gremlinGroovyScriptEngine = new GremlinGroovyScriptEngine(new GroovyCustomizer()
         return new RepeatASTTransformationCustomizer(new VarAsBindingASTTransformation())
     }
 })
-pythonTranslator = PythonTranslator.of('g')
+translator = PythonTranslator.of('g')
 g = traversal().withGraph(EmptyGraph.instance())
 bindings = new SimpleBindings()
 bindings.put('g', g)
@@ -97,7 +97,7 @@ radishGremlinFile.withWriter('UTF-8') { Writer writer ->
                 writer.write("=None")
             }
             writer.write(":")
-            writer.write(pythonTranslator.translate(t.bytecode).script)
+            writer.write(translator.translate(t.bytecode).script)
             writer.write(")")
             if (gremlinItty.hasNext()) writer.write(', ')
         }