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

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


The following commit(s) were added to refs/heads/TINKERPOP-2978-3 by this push:
     new c0beabc3ce remove traversal parameter for list functions
c0beabc3ce is described below

commit c0beabc3ce5b9aee90a8397d26b40a52ae9c2b2b
Author: Ken Hu <[email protected]>
AuthorDate: Wed Oct 18 16:22:05 2023 -0700

    remove traversal parameter for list functions
    
    update duplicate named scenarios and removed ITraversal from gremlin-dotnet
    
    add ordering to two tests
    
    ignore tests as set not implemented for gremlin-js
---
 .../grammar/DefaultGremlinBaseVisitor.java         | 24 --------
 .../language/grammar/TraversalMethodVisitor.java   | 48 ---------------
 .../traversal/dsl/graph/GraphTraversal.java        | 72 ----------------------
 .../gremlin/process/traversal/dsl/graph/__.java    | 56 +++--------------
 .../grammar/TraversalMethodVisitorTest.java        | 24 --------
 .../Process/Traversal/GraphTraversal.cs            | 54 ----------------
 .../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs |  5 +-
 gremlin-go/driver/cucumber/gremlin.go              |  5 +-
 .../test/cucumber/feature-steps.js                 | 46 ++++++++++++++
 .../gremlin-javascript/test/cucumber/gremlin.js    |  5 +-
 gremlin-language/src/main/antlr4/Gremlin.g4        | 18 ++----
 gremlin-python/src/main/python/radish/gremlin.py   |  5 +-
 .../gremlin/test/features/map/Combine.feature      |  6 +-
 .../gremlin/test/features/map/Intersect.feature    |  6 +-
 .../gremlin/test/features/map/Join.feature         |  6 +-
 15 files changed, 80 insertions(+), 300 deletions(-)

diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java
index 7de72da57e..d121da91c1 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java
@@ -319,10 +319,6 @@ public class DefaultGremlinBaseVisitor<T> extends 
AbstractParseTreeVisitor<T> im
         * {@inheritDoc}
         */
        @Override public T visitTraversalMethod_combine_Object(final 
GremlinParser.TraversalMethod_combine_ObjectContext ctx) { notImplemented(ctx); 
return null; }
-       /**
-        * {@inheritDoc}
-        */
-       @Override public T visitTraversalMethod_combine_Traversal(final 
GremlinParser.TraversalMethod_combine_TraversalContext ctx) { 
notImplemented(ctx); return null; }
        /**
         * {@inheritDoc}
         */
@@ -355,18 +351,10 @@ public class DefaultGremlinBaseVisitor<T> extends 
AbstractParseTreeVisitor<T> im
         * {@inheritDoc}
         */
        @Override public T visitTraversalMethod_difference_Object(final 
GremlinParser.TraversalMethod_difference_ObjectContext ctx) { 
notImplemented(ctx); return null; }
-       /**
-        * {@inheritDoc}
-        */
-       @Override public T visitTraversalMethod_difference_Traversal(final 
GremlinParser.TraversalMethod_difference_TraversalContext ctx) { 
notImplemented(ctx); return null; }
        /**
         * {@inheritDoc}
         */
        @Override public T visitTraversalMethod_disjunct_Object(final 
GremlinParser.TraversalMethod_disjunct_ObjectContext ctx) { 
notImplemented(ctx); return null; }
-       /**
-        * {@inheritDoc}
-        */
-       @Override public T visitTraversalMethod_disjunct_Traversal(final 
GremlinParser.TraversalMethod_disjunct_TraversalContext ctx) { 
notImplemented(ctx); return null; }
        /**
         * {@inheritDoc}
         */
@@ -535,10 +523,6 @@ public class DefaultGremlinBaseVisitor<T> extends 
AbstractParseTreeVisitor<T> im
         * {@inheritDoc}
         */
        @Override public T visitTraversalMethod_intersect_Object(final 
GremlinParser.TraversalMethod_intersect_ObjectContext ctx) { 
notImplemented(ctx); return null; }
-       /**
-        * {@inheritDoc}
-        */
-       @Override public T visitTraversalMethod_intersect_Traversal(final 
GremlinParser.TraversalMethod_intersect_TraversalContext ctx) { 
notImplemented(ctx); return null; }
        /**
         * {@inheritDoc}
         */
@@ -623,10 +607,6 @@ public class DefaultGremlinBaseVisitor<T> extends 
AbstractParseTreeVisitor<T> im
         * {@inheritDoc}
         */
        @Override public T visitTraversalMethod_merge_Object(final 
GremlinParser.TraversalMethod_merge_ObjectContext ctx) { notImplemented(ctx); 
return null; }
-       /**
-        * {@inheritDoc}
-        */
-       @Override public T visitTraversalMethod_merge_Traversal(final 
GremlinParser.TraversalMethod_merge_TraversalContext ctx) { 
notImplemented(ctx); return null; }
        /**
         * {@inheritDoc}
         */
@@ -699,10 +679,6 @@ public class DefaultGremlinBaseVisitor<T> extends 
AbstractParseTreeVisitor<T> im
         * {@inheritDoc}
         */
        @Override public T visitTraversalMethod_product_Object(final 
GremlinParser.TraversalMethod_product_ObjectContext ctx) { notImplemented(ctx); 
return null; }
-       /**
-        * {@inheritDoc}
-        */
-       @Override public T visitTraversalMethod_product_Traversal(final 
GremlinParser.TraversalMethod_product_TraversalContext ctx) { 
notImplemented(ctx); return null; }
        /**
         * {@inheritDoc}
         */
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
index 6508d6f70a..42c7736581 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
@@ -440,14 +440,6 @@ public class TraversalMethodVisitor extends 
TraversalRootVisitor<GraphTraversal>
         return 
graphTraversal.combine(antlr.argumentVisitor.visitGenericLiteralArgument(ctx.genericLiteralArgument()));
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public GraphTraversal visitTraversalMethod_combine_Traversal(final 
GremlinParser.TraversalMethod_combine_TraversalContext ctx) {
-        return 
graphTraversal.combine(antlr.tvisitor.visitNestedTraversal(ctx.nestedTraversal()));
-    }
-
     /**
      * {@inheritDoc}
      */
@@ -514,14 +506,6 @@ public class TraversalMethodVisitor extends 
TraversalRootVisitor<GraphTraversal>
         return 
graphTraversal.difference(antlr.argumentVisitor.visitGenericLiteralArgument(ctx.genericLiteralArgument()));
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public GraphTraversal visitTraversalMethod_difference_Traversal(final 
GremlinParser.TraversalMethod_difference_TraversalContext ctx) {
-        return 
graphTraversal.difference(antlr.tvisitor.visitNestedTraversal(ctx.nestedTraversal()));
-    }
-
     /**
      * {@inheritDoc}
      */
@@ -530,14 +514,6 @@ public class TraversalMethodVisitor extends 
TraversalRootVisitor<GraphTraversal>
         return 
graphTraversal.disjunct(antlr.argumentVisitor.visitGenericLiteralArgument(ctx.genericLiteralArgument()));
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public GraphTraversal visitTraversalMethod_disjunct_Traversal(final 
GremlinParser.TraversalMethod_disjunct_TraversalContext ctx) {
-        return 
graphTraversal.disjunct(antlr.tvisitor.visitNestedTraversal(ctx.nestedTraversal()));
-    }
-
     /**
      * {@inheritDoc}
      */
@@ -882,14 +858,6 @@ public class TraversalMethodVisitor extends 
TraversalRootVisitor<GraphTraversal>
         return 
graphTraversal.intersect(antlr.argumentVisitor.visitGenericLiteralArgument(ctx.genericLiteralArgument()));
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public GraphTraversal visitTraversalMethod_intersect_Traversal(final 
GremlinParser.TraversalMethod_intersect_TraversalContext ctx) {
-        return 
graphTraversal.intersect(antlr.tvisitor.visitNestedTraversal(ctx.nestedTraversal()));
-    }
-
     /**
      * {@inheritDoc}
      */
@@ -1098,14 +1066,6 @@ public class TraversalMethodVisitor extends 
TraversalRootVisitor<GraphTraversal>
         return 
graphTraversal.merge(antlr.argumentVisitor.visitGenericLiteralArgument(ctx.genericLiteralArgument()));
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public GraphTraversal visitTraversalMethod_merge_Traversal(final 
GremlinParser.TraversalMethod_merge_TraversalContext ctx) {
-        return 
graphTraversal.merge(antlr.tvisitor.visitNestedTraversal(ctx.nestedTraversal()));
-    }
-
     /**
      * {@inheritDoc}
      */
@@ -1289,14 +1249,6 @@ public class TraversalMethodVisitor extends 
TraversalRootVisitor<GraphTraversal>
         return 
graphTraversal.product(antlr.argumentVisitor.visitGenericLiteralArgument(ctx.genericLiteralArgument()));
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public GraphTraversal visitTraversalMethod_product_Traversal(final 
GremlinParser.TraversalMethod_product_TraversalContext ctx) {
-        return 
graphTraversal.product(antlr.tvisitor.visitNestedTraversal(ctx.nestedTraversal()));
-    }
-
     /**
      * {@inheritDoc}
      */
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index 3b63605249..cffb9d3be4 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -1690,18 +1690,6 @@ public interface GraphTraversal<S, E> extends 
Traversal<S, E> {
         return this.asAdmin().addStep(new DifferenceStep<>(this.asAdmin(), 
values));
     }
 
-    /**
-     * Calculates the difference between the list traverser and list argument.
-     *
-     * @return the traversal with an appended {@link DifferenceStep}.
-     * @see <a 
href="http://tinkerpop.apache.org/docs/${project.version}/reference/#difference-step";
 target="_blank">Reference Documentation - Difference Step</a>
-     * @since 3.7.1
-     */
-    public default GraphTraversal<S, Set<?>> difference(final Traversal<?, ?> 
valuesTraversal) {
-        this.asAdmin().getBytecode().addStep(Symbols.difference, 
valuesTraversal);
-        return this.asAdmin().addStep(new DifferenceStep<>(this.asAdmin(), 
valuesTraversal));
-    }
-
     /**
      * Calculates the disjunction between the list traverser and list argument.
      *
@@ -1714,18 +1702,6 @@ public interface GraphTraversal<S, E> extends 
Traversal<S, E> {
         return this.asAdmin().addStep(new DisjunctStep<>(this.asAdmin(), 
values));
     }
 
-    /**
-     * Calculates the disjunction between the list traverser and list argument.
-     *
-     * @return the traversal with an appended {@link DisjunctStep}.
-     * @see <a 
href="http://tinkerpop.apache.org/docs/${project.version}/reference/#disjunct-step";
 target="_blank">Reference Documentation - Disjunct Step</a>
-     * @since 3.7.1
-     */
-    public default GraphTraversal<S, Set<?>> disjunct(final Traversal<?, ?> 
valuesTraversal) {
-        this.asAdmin().getBytecode().addStep(Symbols.disjunct, 
valuesTraversal);
-        return this.asAdmin().addStep(new DisjunctStep<>(this.asAdmin(), 
valuesTraversal));
-    }
-
     /**
      * Calculates the intersection between the list traverser and list 
argument.
      *
@@ -1738,18 +1714,6 @@ public interface GraphTraversal<S, E> extends 
Traversal<S, E> {
         return this.asAdmin().addStep(new IntersectStep<>(this.asAdmin(), 
values));
     }
 
-    /**
-     * Calculates the intersection between the list traverser and list 
argument.
-     *
-     * @return the traversal with an appended {@link IntersectStep}.
-     * @see <a 
href="http://tinkerpop.apache.org/docs/${project.version}/reference/#intersect-step";
 target="_blank">Reference Documentation - Intersect Step</a>
-     * @since 3.7.1
-     */
-    public default GraphTraversal<S, Set<?>> intersect(final Traversal<?, ?> 
valuesTraversal) {
-        this.asAdmin().getBytecode().addStep(Symbols.intersect, 
valuesTraversal);
-        return this.asAdmin().addStep(new IntersectStep<>(this.asAdmin(), 
valuesTraversal));
-    }
-
     /**
      * Joins together the elements of the incoming list traverser together 
with the provided delimiter.
      *
@@ -1774,18 +1738,6 @@ public interface GraphTraversal<S, E> extends 
Traversal<S, E> {
         return this.asAdmin().addStep(new TraversalMergeStep<>(this.asAdmin(), 
values));
     }
 
-    /**
-     * Merges the list traverser and list argument. Also known as union.
-     *
-     * @return the traversal with an appended {@link TraversalMergeStep}.
-     * @see <a 
href="http://tinkerpop.apache.org/docs/${project.version}/reference/#merge-step";
 target="_blank">Reference Documentation - Merge Step</a>
-     * @since 3.7.1
-     */
-    public default GraphTraversal<S, ?> merge(final Traversal<?, ?> 
valuesTraversal) {
-        this.asAdmin().getBytecode().addStep(Symbols.merge, valuesTraversal);
-        return this.asAdmin().addStep(new TraversalMergeStep<>(this.asAdmin(), 
valuesTraversal));
-    }
-
     /**
      * Combines the list traverser and list argument. Also known as 
concatenation or append.
      *
@@ -1798,18 +1750,6 @@ public interface GraphTraversal<S, E> extends 
Traversal<S, E> {
         return this.asAdmin().addStep(new CombineStep<>(this.asAdmin(), 
values));
     }
 
-    /**
-     * Combines the list traverser and list argument. Also known as 
concatenation or append.
-     *
-     * @return the traversal with an appended {@link CombineStep}.
-     * @see <a 
href="http://tinkerpop.apache.org/docs/${project.version}/reference/#combine-step";
 target="_blank">Reference Documentation - Combine Step</a>
-     * @since 3.7.1
-     */
-    public default GraphTraversal<S, List<?>> combine(final Traversal<?, ?> 
valuesTraversal) {
-        this.asAdmin().getBytecode().addStep(Symbols.combine, valuesTraversal);
-        return this.asAdmin().addStep(new CombineStep<>(this.asAdmin(), 
valuesTraversal));
-    }
-
     /**
      * Calculates the cartesian product between the list traverser and list 
argument.
      *
@@ -1822,18 +1762,6 @@ public interface GraphTraversal<S, E> extends 
Traversal<S, E> {
         return this.asAdmin().addStep(new ProductStep<>(this.asAdmin(), 
values));
     }
 
-    /**
-     * Calculates the cartesian product between the list traverser and list 
argument.
-     *
-     * @return the traversal with an appended {@link ProductStep}.
-     * @see <a 
href="http://tinkerpop.apache.org/docs/${project.version}/reference/#product-step";
 target="_blank">Reference Documentation - Product Step</a>
-     * @since 3.7.1
-     */
-    public default GraphTraversal<S, List<List<?>>> product(final Traversal<?, 
?> valuesTraversal) {
-        this.asAdmin().getBytecode().addStep(Symbols.product, valuesTraversal);
-        return this.asAdmin().addStep(new ProductStep<>(this.asAdmin(), 
valuesTraversal));
-    }
-
     ///////////////////// FILTER STEPS /////////////////////
 
     /**
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
index 7cce5f5686..350c79d345 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
@@ -724,96 +724,54 @@ public class __ {
     }
 
     /**
-     * @see GraphTraversal#difference(Traversal)
+     * @see GraphTraversal#difference(Object)
      */
     public static <A> GraphTraversal<A, Set<?>> difference(final Object 
values) {
         return __.<A>start().difference(values);
     }
 
     /**
-     * @see GraphTraversal#concat(String...)
-     */
-    public static <A> GraphTraversal<A, Set<?>> difference(final Traversal<?, 
Set<?>> valuesTraversal) {
-        return __.<A>start().difference(valuesTraversal);
-    }
-
-    /**
-     * @see GraphTraversal#concat(String...)
+     * @see GraphTraversal#disjunct(Object)
      */
     public static <A> GraphTraversal<A, Set<?>> disjunct(final Object values) {
         return __.<A>start().disjunct(values);
     }
 
     /**
-     * @see GraphTraversal#concat(String...)
-     */
-    public static <A> GraphTraversal<A, Set<?>> disjunct(final Traversal<?, 
Set<?>> valuesTraversal) {
-        return __.<A>start().disjunct(valuesTraversal);
-    }
-
-    /**
-     * @see GraphTraversal#concat(String...)
+     * @see GraphTraversal#intersect(Object)
      */
     public static <A> GraphTraversal<A, Set<?>> intersect(final Object values) 
{
         return __.<A>start().intersect(values);
     }
 
     /**
-     * @see GraphTraversal#concat(String...)
-     */
-    public static <A> GraphTraversal<A, Set<?>> intersect(final Traversal<?, 
Set<?>> valuesTraversal) {
-        return __.<A>start().intersect(valuesTraversal);
-    }
-
-    /**
-     * @see GraphTraversal#concat(String...)
+     * @see GraphTraversal#join(String)
      */
     public static <A> GraphTraversal<A, String> join(final String values) {
         return __.<A>start().join(values);
     }
 
     /**
-     * @see GraphTraversal#concat(String...)
+     * @see GraphTraversal#merge(Object)
      */
     public static <A> GraphTraversal<A, A> merge(final Object values) {
         return __.<A>start().merge(values);
     }
 
     /**
-     * @see GraphTraversal#concat(String...)
-     */
-    public static <A> GraphTraversal<A, ?> merge(final Traversal<?, ?> 
valuesTraversal) {
-        return __.<A>start().merge(valuesTraversal);
-    }
-
-    /**
-     * @see GraphTraversal#concat(String...)
+     * @see GraphTraversal#combine(Object)
      */
     public static <A> GraphTraversal<A, List<?>> combine(final Object values) {
         return __.<A>start().combine(values);
     }
 
     /**
-     * @see GraphTraversal#concat(String...)
-     */
-    public static <A> GraphTraversal<A, List<?>> combine(final Traversal<?, 
List<?>> valuesTraversal) {
-        return __.<A>start().combine(valuesTraversal);
-    }
-
-    /**
-     * @see GraphTraversal#concat(String...)
+     * @see GraphTraversal#product(Object)
      */
     public static <A> GraphTraversal<A, List<List<?>>> product(final Object 
values) {
         return __.<A>start().product(values);
     }
 
-    /**
-     * @see GraphTraversal#concat(String...)
-     */
-    public static <A> GraphTraversal<A, List<List<?>>> product(final 
Traversal<?, List<List<?>>> valuesTraversal) {
-        return __.<A>start().product(valuesTraversal);
-    }
-
     ///////////////////// FILTER STEPS /////////////////////
 
     /**
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitorTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitorTest.java
index 5f8e1bd71c..2acfce2ac9 100644
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitorTest.java
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitorTest.java
@@ -284,10 +284,6 @@ public class TraversalMethodVisitorTest {
         list.add(2);
         compare(g.V().values("name").fold().combine(list),
                 eval("g.V().values(\"name\").fold().combine([1,2])"));
-    }
-
-    @Test
-    public void shouldParseTraversalMethod_combine_Traversal() throws 
Exception {
         compare(g.V().values("name").fold().combine(V().fold()),
                 eval("g.V().values(\"name\").fold().combine(__.V().fold())"));
     }
@@ -329,10 +325,6 @@ public class TraversalMethodVisitorTest {
         list.add(2);
         compare(g.V().values("name").fold().difference(list),
                 eval("g.V().values(\"name\").fold().difference([1,2])"));
-    }
-
-    @Test
-    public void shouldParseTraversalMethod_difference_Traversal() throws 
Exception {
         compare(g.V().values("name").fold().difference(V().fold()),
                 
eval("g.V().values(\"name\").fold().difference(__.V().fold())"));
     }
@@ -344,10 +336,6 @@ public class TraversalMethodVisitorTest {
         list.add(2);
         compare(g.V().values("name").fold().disjunct(list),
                 eval("g.V().values(\"name\").fold().disjunct([1,2])"));
-    }
-
-    @Test
-    public void shouldParseTraversalMethod_disjunct_Traversal() throws 
Exception {
         compare(g.V().values("name").fold().disjunct(V().fold()),
                 eval("g.V().values(\"name\").fold().disjunct(__.V().fold())"));
     }
@@ -562,10 +550,6 @@ public class TraversalMethodVisitorTest {
         list.add(2);
         compare(g.V().values("name").fold().intersect(list),
                 eval("g.V().values(\"name\").fold().intersect([1,2])"));
-    }
-
-    @Test
-    public void shouldParseTraversalMethod_intersect_Traversal() throws 
Exception {
         compare(g.V().values("name").fold().intersect(V().fold()),
                 
eval("g.V().values(\"name\").fold().intersect(__.V().fold())"));
     }
@@ -663,10 +647,6 @@ public class TraversalMethodVisitorTest {
         list.add(2);
         compare(g.V().values("name").fold().merge(list),
                 eval("g.V().values(\"name\").fold().merge([1,2])"));
-    }
-
-    @Test
-    public void shouldParseTraversalMethod_merge_Traversal() throws Exception {
         compare(g.V().values("name").fold().merge(V().fold()),
                 eval("g.V().values(\"name\").fold().merge(__.V().fold())"));
     }
@@ -764,10 +744,6 @@ public class TraversalMethodVisitorTest {
         list.add(2);
         compare(g.V().values("name").fold().product(list),
                 eval("g.V().values(\"name\").fold().product([1,2])"));
-    }
-
-    @Test
-    public void shouldParseTraversalMethod_product_Traversal() throws 
Exception {
         compare(g.V().values("name").fold().product(V().fold()),
                 eval("g.V().values(\"name\").fold().product(__.V().fold())"));
     }
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs 
b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
index fd6c0f2942..b63eaa04af 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -538,15 +538,6 @@ namespace Gremlin.Net.Process.Traversal
             return Wrap<TStart, TEnd>(this);
         }
 
-        /// <summary>
-        ///     Adds the combine step to this <see cref="GraphTraversal{SType, 
EType}" />.
-        /// </summary>
-        public GraphTraversal<TStart, TEnd> Combine<TNewEnd> (ITraversal 
combineTraversal)
-        {
-            Bytecode.AddStep("combine", combineTraversal);
-            return Wrap<TStart, TEnd>(this);
-        }
-
         /// <summary>
         ///     Adds the combine step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
@@ -676,15 +667,6 @@ namespace Gremlin.Net.Process.Traversal
             return Wrap<TStart, TEnd>(this);
         }
 
-        /// <summary>
-        ///     Adds the difference step to this <see 
cref="GraphTraversal{SType, EType}" />.
-        /// </summary>
-        public GraphTraversal<TStart, TEnd> Difference<TNewEnd> (ITraversal 
differenceTraversal)
-        {
-            Bytecode.AddStep("difference", differenceTraversal);
-            return Wrap<TStart, TEnd>(this);
-        }
-
         /// <summary>
         ///     Adds the difference step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
@@ -694,15 +676,6 @@ namespace Gremlin.Net.Process.Traversal
             return Wrap<TStart, TEnd>(this);
         }
 
-        /// <summary>
-        ///     Adds the disjunct step to this <see 
cref="GraphTraversal{SType, EType}" />.
-        /// </summary>
-        public GraphTraversal<TStart, TEnd> Disjunct<TNewEnd> (ITraversal 
disjunctTraversal)
-        {
-            Bytecode.AddStep("disjunct", disjunctTraversal);
-            return Wrap<TStart, TEnd>(this);
-        }
-
         /// <summary>
         ///     Adds the disjunct step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
@@ -1198,15 +1171,6 @@ namespace Gremlin.Net.Process.Traversal
             return Wrap<TStart, TEnd>(this);
         }
 
-        /// <summary>
-        ///     Adds the intersect step to this <see 
cref="GraphTraversal{SType, EType}" />.
-        /// </summary>
-        public GraphTraversal<TStart, TEnd> Intersect<TNewEnd> (ITraversal 
intersectTraversal)
-        {
-            Bytecode.AddStep("intersect", intersectTraversal);
-            return Wrap<TStart, TEnd>(this);
-        }
-
         /// <summary>
         ///     Adds the intersect step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
@@ -1400,15 +1364,6 @@ namespace Gremlin.Net.Process.Traversal
             return Wrap<TStart, TNewEnd>(this);
         }
 
-        /// <summary>
-        ///     Adds the merge step to this <see cref="GraphTraversal{SType, 
EType}" />.
-        /// </summary>
-        public GraphTraversal<TStart, TEnd> Merge<TNewEnd> (ITraversal 
mergeTraversal)
-        {
-            Bytecode.AddStep("merge", mergeTraversal);
-            return Wrap<TStart, TEnd>(this);
-        }
-
         /// <summary>
         ///     Adds the merge step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
@@ -1664,15 +1619,6 @@ namespace Gremlin.Net.Process.Traversal
             return Wrap<TStart, TEnd>(this);
         }
 
-        /// <summary>
-        ///     Adds the product step to this <see cref="GraphTraversal{SType, 
EType}" />.
-        /// </summary>
-        public GraphTraversal<TStart, TEnd> Product<TNewEnd> (ITraversal 
productTraversal)
-        {
-            Bytecode.AddStep("product", productTraversal);
-            return Wrap<TStart, TEnd>(this);
-        }
-
         /// <summary>
         ///     Adds the product step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs 
b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
index 1759a416f6..81abea6063 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
@@ -707,10 +707,11 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
                {"g_V_valuesXnameX_order_fold_joinX_X", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Values<object>("name").Order().Fold().Join("_")}}, 
                {"g_V_valuesXageX_order_fold_joinX_X", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Values<object>("age").Order().Fold().Join(";")}}, 
                {"g_V_out_path_byXvaluesXnameX_toUpperX_joinXMARKOX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().Out().Path().By(__.Values<object>("name").ToUpper()).Join("MARKO")}}, 
-               {"g_injectXxx1X_joinX_X", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) 
=>g.Inject(p["xx1"]).Join("-"), (g,p) =>g.Inject(p["xx1"]).Join(";")}}, 
+               {"g_injectXmarkoX_joinX_X", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) 
=>g.Inject(p["xx1"]).Join("-")}}, 
                {"g_V_valueMapXlocationX_selectXvaluesX_unfold_joinX1X", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().ValueMap<object,object>("location").Select<object>(Column.Values).Unfold<object>().Join("1")}},
 
                {"g_V_out_out_path_byXnameX_joinXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Out().Out().Path().By("name").Join("")}}, 
-               {"g_injectXxx1X_joinXxyzX", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) 
=>g.Inject(p["xx1"]).Join("xyz")}}, 
+               {"g_injectXa_null_bX_joinXxyzX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.Inject(p["xx1"]).Join("xyz")}}, 
+               {"g_injectX3_threeX_joinX_X", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.Inject(p["xx1"]).Join(";")}}, 
                {"g_injectXfeature_test_nullX_length", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.Inject<object>("feature","test",null).Length()}}, 
                {"g_injectXListXa_bXX_length", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.Inject(p["xx1"]).Length()}}, 
                {"g_V_valuesXnameX_length", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) 
=>g.V().Values<object>("name").Length()}}, 
diff --git a/gremlin-go/driver/cucumber/gremlin.go 
b/gremlin-go/driver/cucumber/gremlin.go
index 6c1393e03d..0685b375a9 100644
--- a/gremlin-go/driver/cucumber/gremlin.go
+++ b/gremlin-go/driver/cucumber/gremlin.go
@@ -678,10 +678,11 @@ var translationMap = map[string][]func(g 
*gremlingo.GraphTraversalSource, p map[
     "g_V_valuesXnameX_order_fold_joinX_X": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("name").Order().Fold().Join("_")}}, 
     "g_V_valuesXageX_order_fold_joinX_X": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("age").Order().Fold().Join(";")}}, 
     "g_V_out_path_byXvaluesXnameX_toUpperX_joinXMARKOX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Out().Path().By(gremlingo.T__.Values("name").ToUpper()).Join("MARKO")}}, 
-    "g_injectXxx1X_joinX_X": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.Inject(p["xx1"]).Join("-")}, func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.Inject(p["xx1"]).Join(";")}}, 
+    "g_injectXmarkoX_joinX_X": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.Inject(p["xx1"]).Join("-")}}, 
     "g_V_valueMapXlocationX_selectXvaluesX_unfold_joinX1X": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().ValueMap("location").Select(gremlingo.Column.Values).Unfold().Join("1")}},
 
     "g_V_out_out_path_byXnameX_joinXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Out().Out().Path().By("name").Join("")}}, 
-    "g_injectXxx1X_joinXxyzX": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.Inject(p["xx1"]).Join("xyz")}}, 
+    "g_injectXa_null_bX_joinXxyzX": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.Inject(p["xx1"]).Join("xyz")}}, 
+    "g_injectX3_threeX_joinX_X": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.Inject(p["xx1"]).Join(";")}}, 
     "g_injectXfeature_test_nullX_length": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.Inject("feature", "test", nil).Length()}}, 
     "g_injectXListXa_bXX_length": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.Inject(p["xx1"]).Length()}}, 
     "g_V_valuesXnameX_length": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.V().Values("name").Length()}}, 
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 b891897a19..8794efc456 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
@@ -75,6 +75,52 @@ const ignoredScenarios = {
   'g_withSideEffectXa_setX_V_both_name_storeXaX_capXaX': new 
IgnoreError(ignoreReason.setNotSupported),
   'g_withSideEffectXa_setX_V_both_name_aggregateXlocal_aX_capXaX': new 
IgnoreError(ignoreReason.setNotSupported),
   'g_V_out_in_valuesXnameX_fold_dedupXlocalX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valuesXnonexistantX_fold_differenceXV_valuesXnameX_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valuesXnameX_fold_differenceXV_valuesXnonexistantX_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valuesXageX_fold_differenceXV_valuesXageX_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_out_path_byXvaluesXnameX_toUpperX_differenceXMARKOX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_injectXmarkoX_differenceXV_valuesXnameX_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  
'g_V_valueMapXlocationX_selectXvaluesX_unfold_differenceXseattle_vancouverX': 
new IgnoreError(ignoreReason.setNotSupported),
+  'g_V_out_out_path_byXnameX_differenceXrippleX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_out_out_path_byXnameX_differenceXempty_listX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valuesXageX_fold_differenceXconstantX27X_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_out_out_path_byXnameX_differenceXdave_kelvinX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_injectXa_null_bX_differenceXa_cX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_injectXa_null_bX_differenceXa_null_cX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_injectX3_threeX_differenceXfive_three_7X': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valuesXnonexistantX_fold_disjunctXV_valuesXnameX_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valuesXnameX_fold_disjunctXV_valuesXnonexistantX_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valuesXageX_fold_disjunctXV_valuesXageX_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_out_path_byXvaluesXnameX_toUpperX_disjunctXMARKOX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valueMapXlocationX_selectXvaluesX_unfold_disjunctXseattle_vancouverX': 
new IgnoreError(ignoreReason.setNotSupported),
+  'g_V_out_out_path_byXnameX_disjunctXmarkoX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_out_out_path_byXnameX_disjunctXstephen_markoX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_out_out_path_byXnameX_disjunctXdave_kelvinX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_injectXa_null_bX_disjunctXa_cX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_injectXa_null_bX_disjunctXa_null_cX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_injectX3_threeX_disjunctXfive_three_7X': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valuesXnonexistantX_fold_intersectXV_valuesXnameX_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valuesXnameX_fold_intersectXV_valuesXnonexistantX_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_out_path_byXvaluesXnameX_toUpperX_intersectXMARKOX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_injectXmarkoX_intersectX___V_valuesXnameX_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valueMapXlocationX_selectXvaluesX_unfold_intersectXseattle_vancouverX': 
new IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valuesXageX_fold_intersectX___constantX27X_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_out_out_path_byXnameX_intersectXdave_kelvinX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_injectXa_null_bX_intersectXa_cX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_injectXa_null_bX_intersectXa_null_cX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_injectX3_threeX_intersectXfive_three_7X': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valuesXnonexistantX_fold_mergeXV_valuesXnameX_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valuesXnameX_fold_mergeXV_valuesXnonexistantX_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valuesXageX_fold_mergeXV_valuesXageX_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_out_path_byXvaluesXnameX_toUpperX_mergeXMARKOX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_injectXmarkoX_mergeXV_valuesXnameX_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valueMapXlocationX_selectXvaluesX_unfold_mergeXseattle_vancouverX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_out_out_path_byXnameX_mergeXempty_listX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_valuesXageX_fold_mergeXconstantX27X_foldX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_V_out_out_path_byXnameX_mergeXdave_kelvinX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_injectXa_null_bX_mergeXa_cX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_injectXa_null_bX_mergeXa_null_cX': new 
IgnoreError(ignoreReason.setNotSupported),
+  'g_injectX3_threeX_mergeXfive_three_7X': new 
IgnoreError(ignoreReason.setNotSupported),
   'g_withStrategiesXProductiveByStrategyX_V_groupCount_byXageX': new 
IgnoreError(ignoreReason.nullKeysInMapNotSupportedWell),
   'g_V_shortestPath_edgesIncluded': new 
IgnoreError(ignoreReason.needsFurtherInvestigation),
   'g_V_shortestPath_edgesIncluded_edgesXoutEX': new 
IgnoreError(ignoreReason.needsFurtherInvestigation),
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
index 2a61d6cea3..38ac42d836 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
@@ -698,10 +698,11 @@ const gremlins = {
     g_V_valuesXnameX_order_fold_joinX_X: [function({g}) { return 
g.V().values("name").order().fold().join("_") }], 
     g_V_valuesXageX_order_fold_joinX_X: [function({g}) { return 
g.V().values("age").order().fold().join(";") }], 
     g_V_out_path_byXvaluesXnameX_toUpperX_joinXMARKOX: [function({g}) { return 
g.V().out().path().by(__.values("name").toUpper()).join("MARKO") }], 
-    g_injectXxx1X_joinX_X: [function({g, xx1}) { return 
g.inject(xx1).join("-") }, function({g, xx1}) { return g.inject(xx1).join(";") 
}], 
+    g_injectXmarkoX_joinX_X: [function({g, xx1}) { return 
g.inject(xx1).join("-") }], 
     g_V_valueMapXlocationX_selectXvaluesX_unfold_joinX1X: [function({g}) { 
return g.V().valueMap("location").select(Column.values).unfold().join("1") }], 
     g_V_out_out_path_byXnameX_joinXX: [function({g}) { return 
g.V().out().out().path().by("name").join("") }], 
-    g_injectXxx1X_joinXxyzX: [function({g, xx1}) { return 
g.inject(xx1).join("xyz") }], 
+    g_injectXa_null_bX_joinXxyzX: [function({g, xx1}) { return 
g.inject(xx1).join("xyz") }], 
+    g_injectX3_threeX_joinX_X: [function({g, xx1}) { return 
g.inject(xx1).join(";") }], 
     g_injectXfeature_test_nullX_length: [function({g}) { return 
g.inject("feature","test",null).length() }], 
     g_injectXListXa_bXX_length: [function({g, xx1}) { return 
g.inject(xx1).length() }], 
     g_V_valuesXnameX_length: [function({g}) { return 
g.V().values("name").length() }], 
diff --git a/gremlin-language/src/main/antlr4/Gremlin.g4 
b/gremlin-language/src/main/antlr4/Gremlin.g4
index 1155cdc28e..1ca97323c9 100644
--- a/gremlin-language/src/main/antlr4/Gremlin.g4
+++ b/gremlin-language/src/main/antlr4/Gremlin.g4
@@ -418,8 +418,7 @@ traversalMethod_coin
     ;
 
 traversalMethod_combine
-    : 'combine' LPAREN nestedTraversal RPAREN 
#traversalMethod_combine_Traversal
-    | 'combine' LPAREN genericLiteralArgument RPAREN 
#traversalMethod_combine_Object
+    : 'combine' LPAREN genericLiteralArgument RPAREN 
#traversalMethod_combine_Object
     ;
 
 traversalMethod_connectedComponent
@@ -445,13 +444,11 @@ traversalMethod_dedup
     ;
 
 traversalMethod_difference
-    : 'difference' LPAREN nestedTraversal RPAREN 
#traversalMethod_difference_Traversal
-    | 'difference' LPAREN genericLiteralArgument RPAREN 
#traversalMethod_difference_Object
+    : 'difference' LPAREN genericLiteralArgument RPAREN 
#traversalMethod_difference_Object
     ;
 
 traversalMethod_disjunct
-    : 'disjunct' LPAREN nestedTraversal RPAREN 
#traversalMethod_disjunct_Traversal
-    | 'disjunct' LPAREN genericLiteralArgument RPAREN 
#traversalMethod_disjunct_Object
+    : 'disjunct' LPAREN genericLiteralArgument RPAREN 
#traversalMethod_disjunct_Object
     ;
 
 traversalMethod_drop
@@ -551,8 +548,7 @@ traversalMethod_inE
     ;
 
 traversalMethod_intersect
-    : 'intersect' LPAREN nestedTraversal RPAREN 
#traversalMethod_intersect_Traversal
-    | 'intersect' LPAREN genericLiteralArgument RPAREN 
#traversalMethod_intersect_Object
+    : 'intersect' LPAREN genericLiteralArgument RPAREN 
#traversalMethod_intersect_Object
     ;
 
 traversalMethod_inV
@@ -621,8 +617,7 @@ traversalMethod_mean
     ;
 
 traversalMethod_merge
-    : 'merge' LPAREN nestedTraversal RPAREN #traversalMethod_merge_Traversal
-    | 'merge' LPAREN genericLiteralArgument RPAREN 
#traversalMethod_merge_Object
+    : 'merge' LPAREN genericLiteralArgument RPAREN 
#traversalMethod_merge_Object
     ;
 
 traversalMethod_min
@@ -686,8 +681,7 @@ traversalMethod_peerPressure
     ;
 
 traversalMethod_product
-    : 'product' LPAREN nestedTraversal RPAREN 
#traversalMethod_product_Traversal
-    | 'product' LPAREN genericLiteralArgument RPAREN 
#traversalMethod_product_Object
+    : 'product' LPAREN genericLiteralArgument RPAREN 
#traversalMethod_product_Object
     ;
 
 traversalMethod_profile
diff --git a/gremlin-python/src/main/python/radish/gremlin.py 
b/gremlin-python/src/main/python/radish/gremlin.py
index 751402ecdf..f9daa6810a 100644
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@ -680,10 +680,11 @@ world.gremlins = {
     'g_V_valuesXnameX_order_fold_joinX_X': [(lambda 
g:g.V().name.order().fold().join('_'))], 
     'g_V_valuesXageX_order_fold_joinX_X': [(lambda 
g:g.V().age.order().fold().join(';'))], 
     'g_V_out_path_byXvaluesXnameX_toUpperX_joinXMARKOX': [(lambda 
g:g.V().out().path().by(__.name.to_upper()).join('MARKO'))], 
-    'g_injectXxx1X_joinX_X': [(lambda g, xx1=None:g.inject(xx1).join('-')), 
(lambda g, xx1=None:g.inject(xx1).join(';'))], 
+    'g_injectXmarkoX_joinX_X': [(lambda g, xx1=None:g.inject(xx1).join('-'))], 
     'g_V_valueMapXlocationX_selectXvaluesX_unfold_joinX1X': [(lambda 
g:g.V().valueMap('location').select(Column.values).unfold().join('1'))], 
     'g_V_out_out_path_byXnameX_joinXX': [(lambda 
g:g.V().out().out().path().by('name').join(''))], 
-    'g_injectXxx1X_joinXxyzX': [(lambda g, 
xx1=None:g.inject(xx1).join('xyz'))], 
+    'g_injectXa_null_bX_joinXxyzX': [(lambda g, 
xx1=None:g.inject(xx1).join('xyz'))], 
+    'g_injectX3_threeX_joinX_X': [(lambda g, 
xx1=None:g.inject(xx1).join(';'))], 
     'g_injectXfeature_test_nullX_length': [(lambda 
g:g.inject('feature','test',None).length())], 
     'g_injectXListXa_bXX_length': [(lambda g, 
xx1=None:g.inject(xx1).length())], 
     'g_V_valuesXnameX_length': [(lambda g:g.V().name.length())], 
diff --git 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Combine.feature
 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Combine.feature
index 285fb5e0f1..f7b39f4334 100644
--- 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Combine.feature
+++ 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Combine.feature
@@ -154,16 +154,16 @@ Feature: Step - combine()
       | l[marko,josh,ripple] |
       | l[marko,josh,lop] |
 
-  Scenario: g_V_valuesXageX_fold_combineXconstantX27X_foldX
+  Scenario: g_V_valuesXageX_order_fold_combineXconstantX27X_foldX
     Given the modern graph
     And the traversal of
       """
-      g.V().values("age").fold().combine(__.constant(27).fold())
+      g.V().values("age").order().fold().combine(__.constant(27).fold())
       """
     When iterated to list
     Then the result should be unordered
       | result |
-      | l[d[29].i,d[27].i,d[32].i,d[35].i,d[27].i] |
+      | l[d[27].i,d[29].i,d[32].i,d[35].i,d[27].i] |
 
   @GraphComputerVerificationReferenceOnly
   Scenario: g_V_out_out_path_byXnameX_combineXdave_kelvinX
diff --git 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Intersect.feature
 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Intersect.feature
index bc68237823..bc09ddb633 100644
--- 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Intersect.feature
+++ 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Intersect.feature
@@ -82,16 +82,16 @@ Feature: Step - intersect()
       | s[] |
 
   @GraphComputerVerificationMidVNotSupported
-  Scenario: g_V_valuesXageX_fold_intersectXV_valuesXageX_foldX
+  Scenario: g_V_valuesXageX_fold_intersectXV_valuesXageX_foldX_order_local
     Given the modern graph
     And the traversal of
       """
-      g.V().values("age").fold().intersect(__.V().values("age").fold())
+      
g.V().values("age").fold().intersect(__.V().values("age").fold()).order(Scope.local)
       """
     When iterated to list
     Then the result should be unordered
       | result |
-      | s[d[29].i,d[27].i,d[32].i,d[35].i] |
+      | l[d[27].i,d[29].i,d[32].i,d[35].i] |
 
   @GraphComputerVerificationReferenceOnly
   Scenario: g_V_out_path_byXvaluesXnameX_toUpperX_intersectXMARKOX
diff --git 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Join.feature
 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Join.feature
index 414349cb83..109d268a8c 100644
--- 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Join.feature
+++ 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Join.feature
@@ -88,7 +88,7 @@ Feature: Step - join()
       | PETERMARKOLOP |
 
   @GraphComputerVerificationInjectionNotSupported
-  Scenario: g_injectXxx1X_joinX_X
+  Scenario: g_injectXmarkoX_joinX_X
     Given the modern graph
     And using the parameter xx1 defined as "l[marko]"
     And the traversal of
@@ -129,7 +129,7 @@ Feature: Step - join()
       | markojoshlop |
 
   @GraphComputerVerificationInjectionNotSupported
-  Scenario: g_injectXxx1X_joinXxyzX
+  Scenario: g_injectXa_null_bX_joinXxyzX
     Given the empty graph
     And using the parameter xx1 defined as "l[a,null,b]"
     And the traversal of
@@ -142,7 +142,7 @@ Feature: Step - join()
       | str[axyznullxyzb] |
 
   @GraphComputerVerificationInjectionNotSupported
-  Scenario: g_injectXxx1X_joinX_X
+  Scenario: g_injectX3_threeX_joinX_X
     Given the empty graph
     And using the parameter xx1 defined as "l[d[3].i,three]"
     And the traversal of


Reply via email to