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

xiazcy pushed a commit to branch steps-taking-traversal-poc
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 0c2a39dc17a1d5695aeada74e7d870b3613b5e50
Author: Yang Xia <[email protected]>
AuthorDate: Wed Jun 3 10:25:25 2026 -0700

    update within() to take first result
---
 .../tinkerpop/gremlin/process/traversal/P.java     |  60 ++++-----
 .../gremlin/process/traversal/PTraversalTest.java  |  14 ++-
 .../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs |  14 +--
 gremlin-go/driver/cucumber/gremlin.go              |  14 +--
 .../gremlin-javascript/test/cucumber/gremlin.js    |  14 +--
 .../src/main/python/tests/feature/gremlin.py       |  14 +--
 .../gremlin/language/translator/translations.json  | 140 ++++++++++-----------
 .../test/features/filter/HasTraversal.feature      |  14 +--
 .../test/features/filter/IsTraversal.feature       |   2 +-
 .../test/features/filter/WhereTraversal.feature    |   2 +-
 10 files changed, 147 insertions(+), 141 deletions(-)

diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java
index 80779cd56a..72cd3bcc5d 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java
@@ -321,13 +321,14 @@ public class P<V> implements Predicate<V>, Serializable, 
Cloneable {
      * Resolves the child traversal against the given traverser, replacing the 
traversal value with the
      * resolved literal(s) for this test cycle. If no traversal is present, 
this method returns immediately.
      *
-     * <p>For collection predicates ({@link Contains}), all results are 
collected into the literals
-     * collection. For all other predicates ({@link Compare}, {@link Text}, 
etc.), the traversal must
-     * produce exactly one result or an {@link IllegalArgumentException} is 
thrown.</p>
+     * <p>For all predicates, only the first result from the child traversal 
is used,
+     * consistent with {@code by(traversal)} semantics. For collection 
predicates
+     * ({@link Contains#within}, {@link Contains#without}), the first result 
should be a
+     * {@link Collection} (e.g., produced by {@code fold()}).</p>
      *
      * <p>When multiple traversals are present (via {@link #traversalValues}), 
each traversal is evaluated
-     * independently and results are unioned into a single collection. This is 
only valid for collection
-     * predicates ({@link Contains#within}, {@link Contains#without}).</p>
+     * independently, the first result from each is taken, and results are 
combined into a single collection.
+     * This is only valid for collection predicates ({@link Contains#within}, 
{@link Contains#without}).</p>
      */
     @SuppressWarnings("unchecked")
     public void resolve(final Traverser.Admin<?> traverser) {
@@ -348,28 +349,24 @@ public class P<V> implements Predicate<V>, Serializable, 
Cloneable {
         this.isCollection = false;
 
         try {
-            if (this.biPredicate instanceof Contains) {
-                // Collection predicates (within, without) need all results
-                final List<Object> results = new ArrayList<>();
-                while (trav.hasNext()) {
-                    results.add(trav.next());
-                }
-                this.resolvedEmpty = results.isEmpty();
-                if (!results.isEmpty()) {
-                    this.literals = (Collection<V>) (Collection<?>) results;
-                    this.isCollection = true;
-                } else {
-                    this.literals = Collections.emptyList();
-                }
+            // All predicates take only the first result — consistent with 
by(traversal).
+            // For within/without, the first result should be a Collection 
(e.g., from fold()).
+            if (!trav.hasNext()) {
+                this.resolvedEmpty = true;
+                this.literals = Collections.emptyList();
             } else {
-                // Single-value predicates (Compare, Text, etc.) only need the 
first result.
-                // Stop immediately — consistent with by(traversal) and 
has(key, traversal).
-                if (!trav.hasNext()) {
-                    this.resolvedEmpty = true;
-                    this.literals = Collections.emptyList();
+                this.resolvedEmpty = false;
+                final Object firstResult = trav.next();
+                if (this.biPredicate instanceof Contains && firstResult 
instanceof Collection) {
+                    // The traversal produced a Collection as its first result 
— use it directly
+                    this.literals = (Collection<V>) firstResult;
+                    this.isCollection = true;
+                } else if (this.biPredicate instanceof Contains) {
+                    // Single non-Collection value for within/without — wrap 
in a singleton list
+                    this.literals = Collections.singletonList((V) firstResult);
+                    this.isCollection = true;
                 } else {
-                    this.resolvedEmpty = false;
-                    this.literals = Collections.singleton((V) trav.next());
+                    this.literals = Collections.singleton((V) firstResult);
                 }
             }
         } finally {
@@ -378,7 +375,7 @@ public class P<V> implements Predicate<V>, Serializable, 
Cloneable {
     }
 
     /**
-     * Resolves multiple child traversals, unioning their results into a 
single collection.
+     * Resolves multiple child traversals, taking the first result from each 
and combining into a collection.
      * Only valid for collection predicates ({@link Contains}).
      */
     @SuppressWarnings("unchecked")
@@ -394,8 +391,15 @@ public class P<V> implements Predicate<V>, Serializable, 
Cloneable {
             trav.addStart(split);
 
             try {
-                while (trav.hasNext()) {
-                    allResults.add(trav.next());
+                // Take only the first result from each traversal — consistent 
with by(traversal).
+                // If the first result is a Collection (from fold()), unpack 
it into the results.
+                if (trav.hasNext()) {
+                    final Object firstResult = trav.next();
+                    if (firstResult instanceof Collection) {
+                        allResults.addAll((Collection<?>) firstResult);
+                    } else {
+                        allResults.add(firstResult);
+                    }
                 }
             } finally {
                 CloseableIterator.closeIterator(trav);
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTraversalTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTraversalTest.java
index 40200c8eaa..010965c3f9 100644
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTraversalTest.java
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTraversalTest.java
@@ -163,7 +163,8 @@ public class PTraversalTest {
         @SuppressWarnings("unchecked")
         @Test
         public void shouldAcceptMultipleResultsForWithin() {
-            final P<Object> p = P.within(__.inject(1, 2, 3).asAdmin());
+            // within(traversal) takes first result only. Use fold() to get a 
collection.
+            final P<Object> p = P.within(__.inject(1, 2, 3).fold().asAdmin());
             p.resolve(createTraverser("start"));
             // After resolve, the predicate should have the collection value 
and be testable
             assertThat(p.test(1), is(true));
@@ -175,7 +176,8 @@ public class PTraversalTest {
         @SuppressWarnings("unchecked")
         @Test
         public void shouldAcceptMultipleResultsForWithout() {
-            final P<Object> p = P.without(__.inject(1, 2, 3).asAdmin());
+            // without(traversal) takes first result only. Use fold() to get a 
collection.
+            final P<Object> p = P.without(__.inject(1, 2, 3).fold().asAdmin());
             p.resolve(createTraverser("start"));
             // After resolve, without should exclude the resolved values
             assertThat(p.test(1), is(false));
@@ -303,8 +305,8 @@ public class PTraversalTest {
         @SuppressWarnings("unchecked")
         @Test
         public void shouldResolveMultipleTraversalsWithMultipleResultsEach() {
-            // within(__.inject(1,2), __.inject(3,4)) should union: [1, 2, 3, 
4]
-            final P<Object> p = P.within(__.inject(1, 2).asAdmin(), 
__.inject(3, 4).asAdmin());
+            // within(__.inject(1,2).fold(), __.inject(3,4).fold()) — each 
fold() produces a list, unpacked into union
+            final P<Object> p = P.within(__.inject(1, 2).fold().asAdmin(), 
__.inject(3, 4).fold().asAdmin());
             p.resolve(createTraverser("start"));
             assertThat(p.test(1), is(true));
             assertThat(p.test(2), is(true));
@@ -316,9 +318,9 @@ public class PTraversalTest {
         @SuppressWarnings("unchecked")
         @Test
         public void shouldHandleEmptyResultFromOneTraversal() {
-            // within(__.inject(1,2), __.limit(0)) where second produces 
nothing
+            // within(__.inject(1,2).fold(), __.limit(0)) where second 
produces nothing
             // Should still match on results from first traversal
-            final P<Object> p = P.within(__.inject(1, 2).asAdmin(), 
__.limit(0).asAdmin());
+            final P<Object> p = P.within(__.inject(1, 2).fold().asAdmin(), 
__.limit(0).asAdmin());
             p.resolve(createTraverser("start"));
             assertThat(p.isResolvedEmpty(), is(false));
             assertThat(p.test(1), is(true));
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs 
b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
index fe1b5a8e16..db55facbe6 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
@@ -563,14 +563,14 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
                {"g_V_hasXage_eqXVXvid1X_valuesXnonexistentXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Has("age", 
P.Eq(__.V(p["vid1"]).Values<object>("nonexistent")))}}, 
                {"g_V_hasXlabel_VXvid1X_labelXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Has(T.Label, __.V(p["vid1"]).Label())}}, 
                {"g_V_hasXperson_name_VXvid1X_valuesXnameXX_age", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Has("person", "name", 
__.V(p["vid1"]).Values<object>("name")).Values<object>("age")}}, 
-               
{"g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_constantXpeterXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Has("name", 
P.Within(__.V(p["vid1"]).Out("knows").Values<object>("name"), 
__.Constant<object>("peter")))}}, 
+               
{"g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_constantXpeterXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Has("name", 
P.Within(__.V(p["vid1"]).Out("knows").Values<object>("name").Fold(), 
__.Constant<object>("peter")))}}, 
                
{"g_V_hasXname_withinXVXvid1X_valuesXnonexistentX_constantXmarkoXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Has("name", 
P.Within(__.V(p["vid1"]).Values<object>("nonexistent"), 
__.Constant<object>("marko")))}}, 
                
{"g_V_hasXname_withinXVXvid1X_valuesXnonexistentX_VXvid1X_valuesXnonexistentXXX",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Has("name", 
P.Within(__.V(p["vid1"]).Values<object>("nonexistent"), 
__.V(p["vid1"]).Values<object>("nonexistent")))}}, 
                
{"g_V_hasXname_withoutXVXvid1X_valuesXnameX_VXvid2X_valuesXnameX_VXvid3X_valuesXnameXXX",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Has("name", P.Without(__.V(p["vid1"]).Values<object>("name"), 
__.V(p["vid2"]).Values<object>("name"), 
__.V(p["vid3"]).Values<object>("name")))}}, 
-               
{"g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Has("name", 
P.Within(__.V(p["vid1"]).Out("knows").Values<object>("name"), 
__.V(p["vid3"]).Out("created").Values<object>("name")))}}, 
-               
{"g_V_hasLabelXsoftwareX_hasXname_withoutXVXvid1X_outXcreatedX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().HasLabel("software").Has("name", 
P.Without(__.V(p["vid1"]).Out("created").Values<object>("name"), 
__.V(p["vid3"]).Out("created").Values<object>("name")))}}, 
-               
{"g_V_hasLabelXpersonX_valuesXageX_isXwithinXVXvid1X_valuesXageX_V_hasXname_lopX_inXcreatedX_valuesXageXXX",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().HasLabel("person").Values<object>("age").Is(P.Within(__.V(p["vid1"]).Values<object>("age"),
 __.V().Has("name", "lop").In("created").Values<object>("age")))}}, 
-               
{"g_VXvid1X_outEXknowsX_filterXinV_hasXname_withinXV_hasXname_lopX_inXcreatedX_valuesXnameX_V_hasXname_rippleX_inXcreatedX_valuesXnameXXXX",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V(p["vid1"]).OutE("knows").Filter(__.InV().Has("name", 
P.Within(__.V().Has("name", "lop").In("created").Values<object>("name"), 
__.V().Has("name", "ripple").In("created").Values<object>("name"))))}}, 
+               
{"g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Has("name", 
P.Within(__.V(p["vid1"]).Out("knows").Values<object>("name").Fold(), 
__.V(p["vid3"]).Out("created").Values<object>("name").Fold()))}}, 
+               
{"g_V_hasLabelXsoftwareX_hasXname_withoutXVXvid1X_outXcreatedX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().HasLabel("software").Has("name", 
P.Without(__.V(p["vid1"]).Out("created").Values<object>("name").Fold(), 
__.V(p["vid3"]).Out("created").Values<object>("name").Fold()))}}, 
+               
{"g_V_hasLabelXpersonX_valuesXageX_isXwithinXVXvid1X_valuesXageX_V_hasXname_lopX_inXcreatedX_valuesXageXXX",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().HasLabel("person").Values<object>("age").Is(P.Within(__.V(p["vid1"]).Values<object>("age").Fold(),
 __.V().Has("name", "lop").In("created").Values<object>("age").Fold()))}}, 
+               
{"g_VXvid1X_outEXknowsX_filterXinV_hasXname_withinXV_hasXname_lopX_inXcreatedX_valuesXnameX_V_hasXname_rippleX_inXcreatedX_valuesXnameXXXX",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V(p["vid1"]).OutE("knows").Filter(__.InV().Has("name", 
P.Within(__.V().Has("name", "lop").In("created").Values<object>("name").Fold(), 
__.V().Has("name", "ripple").In("created").Values<object>("name").Fold())))}}, 
                {"g_V_properties_hasValueXnullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Properties<object>().HasValue((object) null)}}, 
                {"g_V_properties_hasValueXnull_nullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Properties<object>().HasValue(null, null)}}, 
                {"g_V_properties_hasValueXnull_joshX_value", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Properties<object>().HasValue(null, "josh").Value<object>()}}, 
@@ -587,7 +587,7 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
                {"g_V_valuesXageX_isXgtXVXvid1X_valuesXageXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().Values<object>("age").Is(P.Gt(__.V(p["vid1"]).Values<object>("age")))}},
 
                {"g_V_valuesXageX_isXltXVXvid3X_valuesXageXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().Values<object>("age").Is(P.Lt(__.V(p["vid3"]).Values<object>("age")))}},
 
                {"g_V_valuesXageX_isXneqXVXvid4X_valuesXageXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().Values<object>("age").Is(P.Neq(__.V(p["vid4"]).Values<object>("age")))}},
 
-               {"g_V_valuesXageX_isXwithinXVXvid1X_outXknowsX_valuesXageXXX", 
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().Values<object>("age").Is(P.Within(__.V(p["vid1"]).Out("knows").Values<object>("age")))}},
 
+               {"g_V_valuesXageX_isXwithinXVXvid1X_outXknowsX_valuesXageXXX", 
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().Values<object>("age").Is(P.Within(__.V(p["vid1"]).Out("knows").Values<object>("age").Fold()))}},
 
                {"g_V_valuesXageX_isXVXvid1X_valuesXnonexistentXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().Values<object>("age").Is(__.V(p["vid1"]).Values<object>("nonexistent"))}},
 
                
{"g_V_hasLabelXpersonX_valuesXageX_chooseXgtXVXvid1X_valuesXageXX_olderX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().HasLabel("person").Values<object>("age").Choose<object>(P.Gt(__.V(p["vid1"]).Values<object>("age")),
 __.Constant<object>("older than marko"), __.Constant<object>("not older"))}}, 
                {"g_V_hasLabelXpersonX_valuesXageX_chooseXgteXmeanAgeX_aboveX", 
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().HasLabel("person").Values<object>("age").Choose<object>(P.Gte(__.V().HasLabel("person").Values<object>("age").Mean<object>()),
 __.Constant<object>("above average"), __.Constant<object>("below average"))}}, 
@@ -777,7 +777,7 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
                {"g_V_valuesXageX_whereXgtXVXvid1X_valuesXageXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().Values<object>("age").Where(P.Gt(__.V(p["vid1"]).Values<object>("age")))}},
 
                {"g_V_valuesXageX_whereXltXVXvid3X_valuesXageXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().Values<object>("age").Where(P.Lt(__.V(p["vid3"]).Values<object>("age")))}},
 
                {"g_V_valuesXageX_whereXeqXVXvid1X_valuesXageXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().Values<object>("age").Where(P.Eq(__.V(p["vid1"]).Values<object>("age")))}},
 
-               
{"g_V_valuesXageX_whereXwithinXVXvid1X_outXknowsX_valuesXageXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().Values<object>("age").Where(P.Within(__.V(p["vid1"]).Out("knows").Values<object>("age")))}},
 
+               
{"g_V_valuesXageX_whereXwithinXVXvid1X_outXknowsX_valuesXageXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().Values<object>("age").Where(P.Within(__.V(p["vid1"]).Out("knows").Values<object>("age").Fold()))}},
 
                {"g_V_valuesXnameX_whereXneqXVXvid1X_valuesXnameXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().Values<object>("name").Where(P.Neq(__.V(p["vid1"]).Values<object>("name")))}},
 
                {"g_V_valuesXageX_whereXeqXV9999_valuesXageXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().Values<object>("age").Where(P.Eq(__.V(9999).Values<object>("age")))}}, 
                {"g_V_whereXgtXVXvid1X_valuesXageXXX_byXageX_valuesXnameX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().Where(P.Gt(__.V(p["vid1"]).Values<object>("age"))).By("age").Values<object>("name")}},
 
diff --git a/gremlin-go/driver/cucumber/gremlin.go 
b/gremlin-go/driver/cucumber/gremlin.go
index 708a0efab3..2930ab9dc2 100644
--- a/gremlin-go/driver/cucumber/gremlin.go
+++ b/gremlin-go/driver/cucumber/gremlin.go
@@ -533,14 +533,14 @@ var translationMap = map[string][]func(g 
*gremlingo.GraphTraversalSource, p map[
     "g_V_hasXage_eqXVXvid1X_valuesXnonexistentXXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Has("age", 
gremlingo.P.Eq(gremlingo.T__.V(p["vid1"]).Values("nonexistent")))}}, 
     "g_V_hasXlabel_VXvid1X_labelXX": {func(g *gremlingo.GraphTraversalSource, 
p map[string]interface{}) *gremlingo.GraphTraversal {return 
g.V().Has(gremlingo.T.Label, gremlingo.T__.V(p["vid1"]).Label())}}, 
     "g_V_hasXperson_name_VXvid1X_valuesXnameXX_age": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Has("person", "name", 
gremlingo.T__.V(p["vid1"]).Values("name")).Values("age")}}, 
-    "g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_constantXpeterXXX": 
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Has("name", 
gremlingo.P.Within(gremlingo.T__.V(p["vid1"]).Out("knows").Values("name"), 
gremlingo.T__.Constant("peter")))}}, 
+    "g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_constantXpeterXXX": 
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Has("name", 
gremlingo.P.Within(gremlingo.T__.V(p["vid1"]).Out("knows").Values("name").Fold(),
 gremlingo.T__.Constant("peter")))}}, 
     "g_V_hasXname_withinXVXvid1X_valuesXnonexistentX_constantXmarkoXXX": 
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Has("name", 
gremlingo.P.Within(gremlingo.T__.V(p["vid1"]).Values("nonexistent"), 
gremlingo.T__.Constant("marko")))}}, 
     
"g_V_hasXname_withinXVXvid1X_valuesXnonexistentX_VXvid1X_valuesXnonexistentXXX":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Has("name", 
gremlingo.P.Within(gremlingo.T__.V(p["vid1"]).Values("nonexistent"), 
gremlingo.T__.V(p["vid1"]).Values("nonexistent")))}}, 
     
"g_V_hasXname_withoutXVXvid1X_valuesXnameX_VXvid2X_valuesXnameX_VXvid3X_valuesXnameXXX":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Has("name", 
gremlingo.P.Without(gremlingo.T__.V(p["vid1"]).Values("name"), 
gremlingo.T__.V(p["vid2"]).Values("name"), 
gremlingo.T__.V(p["vid3"]).Values("name")))}}, 
-    
"g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Has("name", 
gremlingo.P.Within(gremlingo.T__.V(p["vid1"]).Out("knows").Values("name"), 
gremlingo.T__.V(p["vid3"]).Out("created").Values("name")))}}, 
-    
"g_V_hasLabelXsoftwareX_hasXname_withoutXVXvid1X_outXcreatedX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().HasLabel("software").Has("name", 
gremlingo.P.Without(gremlingo.T__.V(p["vid1"]).Out("created").Values("name"), 
gremlingo.T__.V(p["vid3"]).Out("created").Values("name")))}}, 
-    
"g_V_hasLabelXpersonX_valuesXageX_isXwithinXVXvid1X_valuesXageX_V_hasXname_lopX_inXcreatedX_valuesXageXXX":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().HasLabel("person").Values("age").Is(gremlingo.P.Within(gremlingo.T__.V(p["vid1"]).Values("age"),
 gremlingo.T__.V().Has("name", "lop").In("created").Values("age")))}}, 
-    
"g_VXvid1X_outEXknowsX_filterXinV_hasXname_withinXV_hasXname_lopX_inXcreatedX_valuesXnameX_V_hasXname_rippleX_inXcreatedX_valuesXnameXXXX":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V(p["vid1"]).OutE("knows").Filter(gremlingo.T__.InV().Has("name", 
gremlingo.P.Within(gremlingo.T__.V().Has("name", 
"lop").In("created").Values("name"), gremlingo.T__.V().Has("name", 
"ripple").In("created").Values("name"))))}}, 
+    
"g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Has("name", 
gremlingo.P.Within(gremlingo.T__.V(p["vid1"]).Out("knows").Values("name").Fold(),
 gremlingo.T__.V(p["vid3"]).Out("created").Values("name").Fold()))}}, 
+    
"g_V_hasLabelXsoftwareX_hasXname_withoutXVXvid1X_outXcreatedX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().HasLabel("software").Has("name", 
gremlingo.P.Without(gremlingo.T__.V(p["vid1"]).Out("created").Values("name").Fold(),
 gremlingo.T__.V(p["vid3"]).Out("created").Values("name").Fold()))}}, 
+    
"g_V_hasLabelXpersonX_valuesXageX_isXwithinXVXvid1X_valuesXageX_V_hasXname_lopX_inXcreatedX_valuesXageXXX":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().HasLabel("person").Values("age").Is(gremlingo.P.Within(gremlingo.T__.V(p["vid1"]).Values("age").Fold(),
 gremlingo.T__.V().Has("name", "lop").In("created").Values("age").Fold()))}}, 
+    
"g_VXvid1X_outEXknowsX_filterXinV_hasXname_withinXV_hasXname_lopX_inXcreatedX_valuesXnameX_V_hasXname_rippleX_inXcreatedX_valuesXnameXXXX":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V(p["vid1"]).OutE("knows").Filter(gremlingo.T__.InV().Has("name", 
gremlingo.P.Within(gremlingo.T__.V().Has("name", 
"lop").In("created").Values("name").Fold(), gremlingo.T__.V().Has("name", 
"ripple").In("created").Values("name").Fold())))}}, 
     "g_V_properties_hasValueXnullX": {func(g *gremlingo.GraphTraversalSource, 
p map[string]interface{}) *gremlingo.GraphTraversal {return 
g.V().Properties().HasValue(nil)}}, 
     "g_V_properties_hasValueXnull_nullX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Properties().HasValue(nil, nil)}}, 
     "g_V_properties_hasValueXnull_joshX_value": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Properties().HasValue(nil, 
"josh").Value()}}, 
@@ -557,7 +557,7 @@ var translationMap = map[string][]func(g 
*gremlingo.GraphTraversalSource, p map[
     "g_V_valuesXageX_isXgtXVXvid1X_valuesXageXXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("age").Is(gremlingo.P.Gt(gremlingo.T__.V(p["vid1"]).Values("age")))}},
 
     "g_V_valuesXageX_isXltXVXvid3X_valuesXageXXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("age").Is(gremlingo.P.Lt(gremlingo.T__.V(p["vid3"]).Values("age")))}},
 
     "g_V_valuesXageX_isXneqXVXvid4X_valuesXageXXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("age").Is(gremlingo.P.Neq(gremlingo.T__.V(p["vid4"]).Values("age")))}},
 
-    "g_V_valuesXageX_isXwithinXVXvid1X_outXknowsX_valuesXageXXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("age").Is(gremlingo.P.Within(gremlingo.T__.V(p["vid1"]).Out("knows").Values("age")))}},
 
+    "g_V_valuesXageX_isXwithinXVXvid1X_outXknowsX_valuesXageXXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("age").Is(gremlingo.P.Within(gremlingo.T__.V(p["vid1"]).Out("knows").Values("age").Fold()))}},
 
     "g_V_valuesXageX_isXVXvid1X_valuesXnonexistentXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("age").Is(gremlingo.T__.V(p["vid1"]).Values("nonexistent"))}}, 
     "g_V_hasLabelXpersonX_valuesXageX_chooseXgtXVXvid1X_valuesXageXX_olderX": 
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().HasLabel("person").Values("age").Choose(gremlingo.P.Gt(gremlingo.T__.V(p["vid1"]).Values("age")),
 gremlingo.T__.Constant("older than marko"), gremlingo.T__.Constant("not 
older"))}}, 
     "g_V_hasLabelXpersonX_valuesXageX_chooseXgteXmeanAgeX_aboveX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().HasLabel("person").Values("age").Choose(gremlingo.P.Gte(gremlingo.T__.V().HasLabel("person").Values("age").Mean()),
 gremlingo.T__.Constant("above average"), gremlingo.T__.Constant("below 
average"))}}, 
@@ -747,7 +747,7 @@ var translationMap = map[string][]func(g 
*gremlingo.GraphTraversalSource, p map[
     "g_V_valuesXageX_whereXgtXVXvid1X_valuesXageXXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("age").Where(gremlingo.P.Gt(gremlingo.T__.V(p["vid1"]).Values("age")))}},
 
     "g_V_valuesXageX_whereXltXVXvid3X_valuesXageXXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("age").Where(gremlingo.P.Lt(gremlingo.T__.V(p["vid3"]).Values("age")))}},
 
     "g_V_valuesXageX_whereXeqXVXvid1X_valuesXageXXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("age").Where(gremlingo.P.Eq(gremlingo.T__.V(p["vid1"]).Values("age")))}},
 
-    "g_V_valuesXageX_whereXwithinXVXvid1X_outXknowsX_valuesXageXXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("age").Where(gremlingo.P.Within(gremlingo.T__.V(p["vid1"]).Out("knows").Values("age")))}},
 
+    "g_V_valuesXageX_whereXwithinXVXvid1X_outXknowsX_valuesXageXXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("age").Where(gremlingo.P.Within(gremlingo.T__.V(p["vid1"]).Out("knows").Values("age").Fold()))}},
 
     "g_V_valuesXnameX_whereXneqXVXvid1X_valuesXnameXXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("name").Where(gremlingo.P.Neq(gremlingo.T__.V(p["vid1"]).Values("name")))}},
 
     "g_V_valuesXageX_whereXeqXV9999_valuesXageXXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("age").Where(gremlingo.P.Eq(gremlingo.T__.V(9999).Values("age")))}},
 
     "g_V_whereXgtXVXvid1X_valuesXageXXX_byXageX_valuesXnameX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Where(gremlingo.P.Gt(gremlingo.T__.V(p["vid1"]).Values("age"))).By("age").Values("name")}},
 
diff --git a/gremlin-js/gremlin-javascript/test/cucumber/gremlin.js 
b/gremlin-js/gremlin-javascript/test/cucumber/gremlin.js
index 216589eff4..96107777f0 100644
--- a/gremlin-js/gremlin-javascript/test/cucumber/gremlin.js
+++ b/gremlin-js/gremlin-javascript/test/cucumber/gremlin.js
@@ -564,14 +564,14 @@ const gremlins = {
     g_V_hasXage_eqXVXvid1X_valuesXnonexistentXXX: [function({g, vid1}) { 
return g.V().has("age", P.eq(__.V(vid1).values("nonexistent"))) }], 
     g_V_hasXlabel_VXvid1X_labelXX: [function({g, vid1}) { return 
g.V().has(T.label, __.V(vid1).label()) }], 
     g_V_hasXperson_name_VXvid1X_valuesXnameXX_age: [function({g, vid1}) { 
return g.V().has("person", "name", __.V(vid1).values("name")).values("age") }], 
-    g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_constantXpeterXXX: 
[function({g, vid1}) { return g.V().has("name", 
P.within(__.V(vid1).out("knows").values("name"), __.constant("peter"))) }], 
+    g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_constantXpeterXXX: 
[function({g, vid1}) { return g.V().has("name", 
P.within(__.V(vid1).out("knows").values("name").fold(), __.constant("peter"))) 
}], 
     g_V_hasXname_withinXVXvid1X_valuesXnonexistentX_constantXmarkoXXX: 
[function({g, vid1}) { return g.V().has("name", 
P.within(__.V(vid1).values("nonexistent"), __.constant("marko"))) }], 
     
g_V_hasXname_withinXVXvid1X_valuesXnonexistentX_VXvid1X_valuesXnonexistentXXX: 
[function({g, vid1}) { return g.V().has("name", 
P.within(__.V(vid1).values("nonexistent"), __.V(vid1).values("nonexistent"))) 
}], 
     
g_V_hasXname_withoutXVXvid1X_valuesXnameX_VXvid2X_valuesXnameX_VXvid3X_valuesXnameXXX:
 [function({g, vid3, vid2, vid1}) { return g.V().has("name", 
P.without(__.V(vid1).values("name"), __.V(vid2).values("name"), 
__.V(vid3).values("name"))) }], 
-    
g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX:
 [function({g, vid3, vid1}) { return g.V().has("name", 
P.within(__.V(vid1).out("knows").values("name"), 
__.V(vid3).out("created").values("name"))) }], 
-    
g_V_hasLabelXsoftwareX_hasXname_withoutXVXvid1X_outXcreatedX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX:
 [function({g, vid3, vid1}) { return g.V().hasLabel("software").has("name", 
P.without(__.V(vid1).out("created").values("name"), 
__.V(vid3).out("created").values("name"))) }], 
-    
g_V_hasLabelXpersonX_valuesXageX_isXwithinXVXvid1X_valuesXageX_V_hasXname_lopX_inXcreatedX_valuesXageXXX:
 [function({g, vid1}) { return 
g.V().hasLabel("person").values("age").is(P.within(__.V(vid1).values("age"), 
__.V().has("name", "lop").in_("created").values("age"))) }], 
-    
g_VXvid1X_outEXknowsX_filterXinV_hasXname_withinXV_hasXname_lopX_inXcreatedX_valuesXnameX_V_hasXname_rippleX_inXcreatedX_valuesXnameXXXX:
 [function({g, vid1}) { return 
g.V(vid1).outE("knows").filter(__.inV().has("name", P.within(__.V().has("name", 
"lop").in_("created").values("name"), __.V().has("name", 
"ripple").in_("created").values("name")))) }], 
+    
g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX:
 [function({g, vid3, vid1}) { return g.V().has("name", 
P.within(__.V(vid1).out("knows").values("name").fold(), 
__.V(vid3).out("created").values("name").fold())) }], 
+    
g_V_hasLabelXsoftwareX_hasXname_withoutXVXvid1X_outXcreatedX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX:
 [function({g, vid3, vid1}) { return g.V().hasLabel("software").has("name", 
P.without(__.V(vid1).out("created").values("name").fold(), 
__.V(vid3).out("created").values("name").fold())) }], 
+    
g_V_hasLabelXpersonX_valuesXageX_isXwithinXVXvid1X_valuesXageX_V_hasXname_lopX_inXcreatedX_valuesXageXXX:
 [function({g, vid1}) { return 
g.V().hasLabel("person").values("age").is(P.within(__.V(vid1).values("age").fold(),
 __.V().has("name", "lop").in_("created").values("age").fold())) }], 
+    
g_VXvid1X_outEXknowsX_filterXinV_hasXname_withinXV_hasXname_lopX_inXcreatedX_valuesXnameX_V_hasXname_rippleX_inXcreatedX_valuesXnameXXXX:
 [function({g, vid1}) { return 
g.V(vid1).outE("knows").filter(__.inV().has("name", P.within(__.V().has("name", 
"lop").in_("created").values("name").fold(), __.V().has("name", 
"ripple").in_("created").values("name").fold()))) }], 
     g_V_properties_hasValueXnullX: [function({g}) { return 
g.V().properties().hasValue(null) }], 
     g_V_properties_hasValueXnull_nullX: [function({g}) { return 
g.V().properties().hasValue(null, null) }], 
     g_V_properties_hasValueXnull_joshX_value: [function({g}) { return 
g.V().properties().hasValue(null, "josh").value() }], 
@@ -588,7 +588,7 @@ const gremlins = {
     g_V_valuesXageX_isXgtXVXvid1X_valuesXageXXX: [function({g, vid1}) { return 
g.V().values("age").is(P.gt(__.V(vid1).values("age"))) }], 
     g_V_valuesXageX_isXltXVXvid3X_valuesXageXXX: [function({g, vid3}) { return 
g.V().values("age").is(P.lt(__.V(vid3).values("age"))) }], 
     g_V_valuesXageX_isXneqXVXvid4X_valuesXageXXX: [function({g, vid4}) { 
return g.V().values("age").is(P.neq(__.V(vid4).values("age"))) }], 
-    g_V_valuesXageX_isXwithinXVXvid1X_outXknowsX_valuesXageXXX: [function({g, 
vid1}) { return 
g.V().values("age").is(P.within(__.V(vid1).out("knows").values("age"))) }], 
+    g_V_valuesXageX_isXwithinXVXvid1X_outXknowsX_valuesXageXXX: [function({g, 
vid1}) { return 
g.V().values("age").is(P.within(__.V(vid1).out("knows").values("age").fold())) 
}], 
     g_V_valuesXageX_isXVXvid1X_valuesXnonexistentXX: [function({g, vid1}) { 
return g.V().values("age").is(__.V(vid1).values("nonexistent")) }], 
     g_V_hasLabelXpersonX_valuesXageX_chooseXgtXVXvid1X_valuesXageXX_olderX: 
[function({g, vid1}) { return 
g.V().hasLabel("person").values("age").choose(P.gt(__.V(vid1).values("age")), 
__.constant("older than marko"), __.constant("not older")) }], 
     g_V_hasLabelXpersonX_valuesXageX_chooseXgteXmeanAgeX_aboveX: 
[function({g}) { return 
g.V().hasLabel("person").values("age").choose(P.gte(__.V().hasLabel("person").values("age").mean()),
 __.constant("above average"), __.constant("below average")) }], 
@@ -778,7 +778,7 @@ const gremlins = {
     g_V_valuesXageX_whereXgtXVXvid1X_valuesXageXXX: [function({g, vid1}) { 
return g.V().values("age").where(P.gt(__.V(vid1).values("age"))) }], 
     g_V_valuesXageX_whereXltXVXvid3X_valuesXageXXX: [function({g, vid3}) { 
return g.V().values("age").where(P.lt(__.V(vid3).values("age"))) }], 
     g_V_valuesXageX_whereXeqXVXvid1X_valuesXageXXX: [function({g, vid1}) { 
return g.V().values("age").where(P.eq(__.V(vid1).values("age"))) }], 
-    g_V_valuesXageX_whereXwithinXVXvid1X_outXknowsX_valuesXageXXX: 
[function({g, vid1}) { return 
g.V().values("age").where(P.within(__.V(vid1).out("knows").values("age"))) }], 
+    g_V_valuesXageX_whereXwithinXVXvid1X_outXknowsX_valuesXageXXX: 
[function({g, vid1}) { return 
g.V().values("age").where(P.within(__.V(vid1).out("knows").values("age").fold()))
 }], 
     g_V_valuesXnameX_whereXneqXVXvid1X_valuesXnameXXX: [function({g, vid1}) { 
return g.V().values("name").where(P.neq(__.V(vid1).values("name"))) }], 
     g_V_valuesXageX_whereXeqXV9999_valuesXageXXX: [function({g}) { return 
g.V().values("age").where(P.eq(__.V(9999).values("age"))) }], 
     g_V_whereXgtXVXvid1X_valuesXageXXX_byXageX_valuesXnameX: [function({g, 
vid1}) { return 
g.V().where(P.gt(__.V(vid1).values("age"))).by("age").values("name") }], 
diff --git a/gremlin-python/src/main/python/tests/feature/gremlin.py 
b/gremlin-python/src/main/python/tests/feature/gremlin.py
index 7e43e4c884..5116b38e24 100644
--- a/gremlin-python/src/main/python/tests/feature/gremlin.py
+++ b/gremlin-python/src/main/python/tests/feature/gremlin.py
@@ -538,14 +538,14 @@ world.gremlins = {
     'g_V_hasXage_eqXVXvid1X_valuesXnonexistentXXX': [(lambda g, 
vid1=None:g.V().has('age', P.eq(__.V(vid1).values('nonexistent'))))], 
     'g_V_hasXlabel_VXvid1X_labelXX': [(lambda g, vid1=None:g.V().has(T.label, 
__.V(vid1).label()))], 
     'g_V_hasXperson_name_VXvid1X_valuesXnameXX_age': [(lambda g, 
vid1=None:g.V().has('person', 'name', 
__.V(vid1).values('name')).values('age'))], 
-    'g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_constantXpeterXXX': 
[(lambda g, vid1=None:g.V().has('name', 
P.within(__.V(vid1).out('knows').values('name'), __.constant('peter'))))], 
+    'g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_constantXpeterXXX': 
[(lambda g, vid1=None:g.V().has('name', 
P.within(__.V(vid1).out('knows').values('name').fold(), 
__.constant('peter'))))], 
     'g_V_hasXname_withinXVXvid1X_valuesXnonexistentX_constantXmarkoXXX': 
[(lambda g, vid1=None:g.V().has('name', 
P.within(__.V(vid1).values('nonexistent'), __.constant('marko'))))], 
     
'g_V_hasXname_withinXVXvid1X_valuesXnonexistentX_VXvid1X_valuesXnonexistentXXX':
 [(lambda g, vid1=None:g.V().has('name', 
P.within(__.V(vid1).values('nonexistent'), 
__.V(vid1).values('nonexistent'))))], 
     
'g_V_hasXname_withoutXVXvid1X_valuesXnameX_VXvid2X_valuesXnameX_VXvid3X_valuesXnameXXX':
 [(lambda g, vid3=None,vid2=None,vid1=None:g.V().has('name', 
P.without(__.V(vid1).values('name'), __.V(vid2).values('name'), 
__.V(vid3).values('name'))))], 
-    
'g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX':
 [(lambda g, vid3=None,vid1=None:g.V().has('name', 
P.within(__.V(vid1).out('knows').values('name'), 
__.V(vid3).out('created').values('name'))))], 
-    
'g_V_hasLabelXsoftwareX_hasXname_withoutXVXvid1X_outXcreatedX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX':
 [(lambda g, vid3=None,vid1=None:g.V().has_label('software').has('name', 
P.without(__.V(vid1).out('created').values('name'), 
__.V(vid3).out('created').values('name'))))], 
-    
'g_V_hasLabelXpersonX_valuesXageX_isXwithinXVXvid1X_valuesXageX_V_hasXname_lopX_inXcreatedX_valuesXageXXX':
 [(lambda g, 
vid1=None:g.V().has_label('person').values('age').is_(P.within(__.V(vid1).values('age'),
 __.V().has('name', 'lop').in_('created').values('age'))))], 
-    
'g_VXvid1X_outEXknowsX_filterXinV_hasXname_withinXV_hasXname_lopX_inXcreatedX_valuesXnameX_V_hasXname_rippleX_inXcreatedX_valuesXnameXXXX':
 [(lambda g, vid1=None:g.V(vid1).out_e('knows').filter_(__.in_v().has('name', 
P.within(__.V().has('name', 'lop').in_('created').values('name'), 
__.V().has('name', 'ripple').in_('created').values('name')))))], 
+    
'g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX':
 [(lambda g, vid3=None,vid1=None:g.V().has('name', 
P.within(__.V(vid1).out('knows').values('name').fold(), 
__.V(vid3).out('created').values('name').fold())))], 
+    
'g_V_hasLabelXsoftwareX_hasXname_withoutXVXvid1X_outXcreatedX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX':
 [(lambda g, vid3=None,vid1=None:g.V().has_label('software').has('name', 
P.without(__.V(vid1).out('created').values('name').fold(), 
__.V(vid3).out('created').values('name').fold())))], 
+    
'g_V_hasLabelXpersonX_valuesXageX_isXwithinXVXvid1X_valuesXageX_V_hasXname_lopX_inXcreatedX_valuesXageXXX':
 [(lambda g, 
vid1=None:g.V().has_label('person').values('age').is_(P.within(__.V(vid1).values('age').fold(),
 __.V().has('name', 'lop').in_('created').values('age').fold())))], 
+    
'g_VXvid1X_outEXknowsX_filterXinV_hasXname_withinXV_hasXname_lopX_inXcreatedX_valuesXnameX_V_hasXname_rippleX_inXcreatedX_valuesXnameXXXX':
 [(lambda g, vid1=None:g.V(vid1).out_e('knows').filter_(__.in_v().has('name', 
P.within(__.V().has('name', 'lop').in_('created').values('name').fold(), 
__.V().has('name', 'ripple').in_('created').values('name').fold()))))], 
     'g_V_properties_hasValueXnullX': [(lambda 
g:g.V().properties().has_value(None))], 
     'g_V_properties_hasValueXnull_nullX': [(lambda 
g:g.V().properties().has_value(None, None))], 
     'g_V_properties_hasValueXnull_joshX_value': [(lambda 
g:g.V().properties().has_value(None, 'josh').value())], 
@@ -562,7 +562,7 @@ world.gremlins = {
     'g_V_valuesXageX_isXgtXVXvid1X_valuesXageXXX': [(lambda g, 
vid1=None:g.V().values('age').is_(P.gt(__.V(vid1).values('age'))))], 
     'g_V_valuesXageX_isXltXVXvid3X_valuesXageXXX': [(lambda g, 
vid3=None:g.V().values('age').is_(P.lt(__.V(vid3).values('age'))))], 
     'g_V_valuesXageX_isXneqXVXvid4X_valuesXageXXX': [(lambda g, 
vid4=None:g.V().values('age').is_(P.neq(__.V(vid4).values('age'))))], 
-    'g_V_valuesXageX_isXwithinXVXvid1X_outXknowsX_valuesXageXXX': [(lambda g, 
vid1=None:g.V().values('age').is_(P.within(__.V(vid1).out('knows').values('age'))))],
 
+    'g_V_valuesXageX_isXwithinXVXvid1X_outXknowsX_valuesXageXXX': [(lambda g, 
vid1=None:g.V().values('age').is_(P.within(__.V(vid1).out('knows').values('age').fold())))],
 
     'g_V_valuesXageX_isXVXvid1X_valuesXnonexistentXX': [(lambda g, 
vid1=None:g.V().values('age').is_(__.V(vid1).values('nonexistent')))], 
     'g_V_hasLabelXpersonX_valuesXageX_chooseXgtXVXvid1X_valuesXageXX_olderX': 
[(lambda g, 
vid1=None:g.V().has_label('person').values('age').choose(P.gt(__.V(vid1).values('age')),
 __.constant('older than marko'), __.constant('not older')))], 
     'g_V_hasLabelXpersonX_valuesXageX_chooseXgteXmeanAgeX_aboveX': [(lambda 
g:g.V().has_label('person').values('age').choose(P.gte(__.V().has_label('person').values('age').mean()),
 __.constant('above average'), __.constant('below average')))], 
@@ -752,7 +752,7 @@ world.gremlins = {
     'g_V_valuesXageX_whereXgtXVXvid1X_valuesXageXXX': [(lambda g, 
vid1=None:g.V().values('age').where(P.gt(__.V(vid1).values('age'))))], 
     'g_V_valuesXageX_whereXltXVXvid3X_valuesXageXXX': [(lambda g, 
vid3=None:g.V().values('age').where(P.lt(__.V(vid3).values('age'))))], 
     'g_V_valuesXageX_whereXeqXVXvid1X_valuesXageXXX': [(lambda g, 
vid1=None:g.V().values('age').where(P.eq(__.V(vid1).values('age'))))], 
-    'g_V_valuesXageX_whereXwithinXVXvid1X_outXknowsX_valuesXageXXX': [(lambda 
g, 
vid1=None:g.V().values('age').where(P.within(__.V(vid1).out('knows').values('age'))))],
 
+    'g_V_valuesXageX_whereXwithinXVXvid1X_outXknowsX_valuesXageXXX': [(lambda 
g, 
vid1=None:g.V().values('age').where(P.within(__.V(vid1).out('knows').values('age').fold())))],
 
     'g_V_valuesXnameX_whereXneqXVXvid1X_valuesXnameXXX': [(lambda g, 
vid1=None:g.V().values('name').where(P.neq(__.V(vid1).values('name'))))], 
     'g_V_valuesXageX_whereXeqXV9999_valuesXageXXX': [(lambda 
g:g.V().values('age').where(P.eq(__.V(9999).values('age'))))], 
     'g_V_whereXgtXVXvid1X_valuesXageXXX_byXageX_valuesXnameX': [(lambda g, 
vid1=None:g.V().where(P.gt(__.V(vid1).values('age'))).by('age').values('name'))],
 
diff --git 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/language/translator/translations.json
 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/language/translator/translations.json
index e19bb62f0a..6f24c64eae 100644
--- 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/language/translator/translations.json
+++ 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/language/translator/translations.json
@@ -9793,16 +9793,16 @@
         "scenario": 
"g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_constantXpeterXXX",
         "traversals": [
             {
-                "original": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\"), __.constant(\"peter\")))",
-                "language": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\"), __.constant(\"peter\")))",
-                "canonical": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\"), __.constant(\"peter\")))",
-                "anonymized": "g.V().has(string0, 
P.within(__.V(vid1).out(string1).values(string0), __.constant(string2)))",
-                "dotnet": "g.V().Has(\"name\", 
P.Within(__.V(vid1).Out(\"knows\").Values<object>(\"name\"), 
__.Constant<object>(\"peter\")))",
-                "go": "g.V().Has(\"name\", 
gremlingo.P.Within(gremlingo.T__.V(vid1).Out(\"knows\").Values(\"name\"), 
gremlingo.T__.Constant(\"peter\")))",
-                "groovy": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\"), __.constant(\"peter\")))",
-                "java": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\"), __.constant(\"peter\")))",
-                "javascript": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\"), __.constant(\"peter\")))",
-                "python": "g.V().has('name', 
P.within(__.V(vid1).out('knows').values('name'), __.constant('peter')))"
+                "original": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\").fold(), 
__.constant(\"peter\")))",
+                "language": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\").fold(), 
__.constant(\"peter\")))",
+                "canonical": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\").fold(), 
__.constant(\"peter\")))",
+                "anonymized": "g.V().has(string0, 
P.within(__.V(vid1).out(string1).values(string0).fold(), 
__.constant(string2)))",
+                "dotnet": "g.V().Has(\"name\", 
P.Within(__.V(vid1).Out(\"knows\").Values<object>(\"name\").Fold(), 
__.Constant<object>(\"peter\")))",
+                "go": "g.V().Has(\"name\", 
gremlingo.P.Within(gremlingo.T__.V(vid1).Out(\"knows\").Values(\"name\").Fold(),
 gremlingo.T__.Constant(\"peter\")))",
+                "groovy": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\").fold(), 
__.constant(\"peter\")))",
+                "java": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\").fold(), 
__.constant(\"peter\")))",
+                "javascript": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\").fold(), 
__.constant(\"peter\")))",
+                "python": "g.V().has('name', 
P.within(__.V(vid1).out('knows').values('name').fold(), __.constant('peter')))"
             }
         ]
     },
@@ -9861,16 +9861,16 @@
         "scenario": 
"g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX",
         "traversals": [
             {
-                "original": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\"), 
__.V(vid3).out(\"created\").values(\"name\")))",
-                "language": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\"), 
__.V(vid3).out(\"created\").values(\"name\")))",
-                "canonical": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\"), 
__.V(vid3).out(\"created\").values(\"name\")))",
-                "anonymized": "g.V().has(string0, 
P.within(__.V(vid1).out(string1).values(string0), 
__.V(vid3).out(string2).values(string0)))",
-                "dotnet": "g.V().Has(\"name\", 
P.Within(__.V(vid1).Out(\"knows\").Values<object>(\"name\"), 
__.V(vid3).Out(\"created\").Values<object>(\"name\")))",
-                "go": "g.V().Has(\"name\", 
gremlingo.P.Within(gremlingo.T__.V(vid1).Out(\"knows\").Values(\"name\"), 
gremlingo.T__.V(vid3).Out(\"created\").Values(\"name\")))",
-                "groovy": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\"), 
__.V(vid3).out(\"created\").values(\"name\")))",
-                "java": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\"), 
__.V(vid3).out(\"created\").values(\"name\")))",
-                "javascript": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\"), 
__.V(vid3).out(\"created\").values(\"name\")))",
-                "python": "g.V().has('name', 
P.within(__.V(vid1).out('knows').values('name'), 
__.V(vid3).out('created').values('name')))"
+                "original": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\").fold(), 
__.V(vid3).out(\"created\").values(\"name\").fold()))",
+                "language": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\").fold(), 
__.V(vid3).out(\"created\").values(\"name\").fold()))",
+                "canonical": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\").fold(), 
__.V(vid3).out(\"created\").values(\"name\").fold()))",
+                "anonymized": "g.V().has(string0, 
P.within(__.V(vid1).out(string1).values(string0).fold(), 
__.V(vid3).out(string2).values(string0).fold()))",
+                "dotnet": "g.V().Has(\"name\", 
P.Within(__.V(vid1).Out(\"knows\").Values<object>(\"name\").Fold(), 
__.V(vid3).Out(\"created\").Values<object>(\"name\").Fold()))",
+                "go": "g.V().Has(\"name\", 
gremlingo.P.Within(gremlingo.T__.V(vid1).Out(\"knows\").Values(\"name\").Fold(),
 gremlingo.T__.V(vid3).Out(\"created\").Values(\"name\").Fold()))",
+                "groovy": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\").fold(), 
__.V(vid3).out(\"created\").values(\"name\").fold()))",
+                "java": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\").fold(), 
__.V(vid3).out(\"created\").values(\"name\").fold()))",
+                "javascript": "g.V().has(\"name\", 
P.within(__.V(vid1).out(\"knows\").values(\"name\").fold(), 
__.V(vid3).out(\"created\").values(\"name\").fold()))",
+                "python": "g.V().has('name', 
P.within(__.V(vid1).out('knows').values('name').fold(), 
__.V(vid3).out('created').values('name').fold()))"
             }
         ]
     },
@@ -9878,16 +9878,16 @@
         "scenario": 
"g_V_hasLabelXsoftwareX_hasXname_withoutXVXvid1X_outXcreatedX_valuesXnameX_VXvid3X_outXcreatedX_valuesXnameXXX",
         "traversals": [
             {
-                "original": "g.V().hasLabel(\"software\").has(\"name\", 
P.without(__.V(vid1).out(\"created\").values(\"name\"), 
__.V(vid3).out(\"created\").values(\"name\")))",
-                "language": "g.V().hasLabel(\"software\").has(\"name\", 
P.without(__.V(vid1).out(\"created\").values(\"name\"), 
__.V(vid3).out(\"created\").values(\"name\")))",
-                "canonical": "g.V().hasLabel(\"software\").has(\"name\", 
P.without(__.V(vid1).out(\"created\").values(\"name\"), 
__.V(vid3).out(\"created\").values(\"name\")))",
-                "anonymized": "g.V().hasLabel(string0).has(string1, 
P.without(__.V(vid1).out(string2).values(string1), 
__.V(vid3).out(string2).values(string1)))",
-                "dotnet": "g.V().HasLabel(\"software\").Has(\"name\", 
P.Without(__.V(vid1).Out(\"created\").Values<object>(\"name\"), 
__.V(vid3).Out(\"created\").Values<object>(\"name\")))",
-                "go": "g.V().HasLabel(\"software\").Has(\"name\", 
gremlingo.P.Without(gremlingo.T__.V(vid1).Out(\"created\").Values(\"name\"), 
gremlingo.T__.V(vid3).Out(\"created\").Values(\"name\")))",
-                "groovy": "g.V().hasLabel(\"software\").has(\"name\", 
P.without(__.V(vid1).out(\"created\").values(\"name\"), 
__.V(vid3).out(\"created\").values(\"name\")))",
-                "java": "g.V().hasLabel(\"software\").has(\"name\", 
P.without(__.V(vid1).out(\"created\").values(\"name\"), 
__.V(vid3).out(\"created\").values(\"name\")))",
-                "javascript": "g.V().hasLabel(\"software\").has(\"name\", 
P.without(__.V(vid1).out(\"created\").values(\"name\"), 
__.V(vid3).out(\"created\").values(\"name\")))",
-                "python": "g.V().has_label('software').has('name', 
P.without(__.V(vid1).out('created').values('name'), 
__.V(vid3).out('created').values('name')))"
+                "original": "g.V().hasLabel(\"software\").has(\"name\", 
P.without(__.V(vid1).out(\"created\").values(\"name\").fold(), 
__.V(vid3).out(\"created\").values(\"name\").fold()))",
+                "language": "g.V().hasLabel(\"software\").has(\"name\", 
P.without(__.V(vid1).out(\"created\").values(\"name\").fold(), 
__.V(vid3).out(\"created\").values(\"name\").fold()))",
+                "canonical": "g.V().hasLabel(\"software\").has(\"name\", 
P.without(__.V(vid1).out(\"created\").values(\"name\").fold(), 
__.V(vid3).out(\"created\").values(\"name\").fold()))",
+                "anonymized": "g.V().hasLabel(string0).has(string1, 
P.without(__.V(vid1).out(string2).values(string1).fold(), 
__.V(vid3).out(string2).values(string1).fold()))",
+                "dotnet": "g.V().HasLabel(\"software\").Has(\"name\", 
P.Without(__.V(vid1).Out(\"created\").Values<object>(\"name\").Fold(), 
__.V(vid3).Out(\"created\").Values<object>(\"name\").Fold()))",
+                "go": "g.V().HasLabel(\"software\").Has(\"name\", 
gremlingo.P.Without(gremlingo.T__.V(vid1).Out(\"created\").Values(\"name\").Fold(),
 gremlingo.T__.V(vid3).Out(\"created\").Values(\"name\").Fold()))",
+                "groovy": "g.V().hasLabel(\"software\").has(\"name\", 
P.without(__.V(vid1).out(\"created\").values(\"name\").fold(), 
__.V(vid3).out(\"created\").values(\"name\").fold()))",
+                "java": "g.V().hasLabel(\"software\").has(\"name\", 
P.without(__.V(vid1).out(\"created\").values(\"name\").fold(), 
__.V(vid3).out(\"created\").values(\"name\").fold()))",
+                "javascript": "g.V().hasLabel(\"software\").has(\"name\", 
P.without(__.V(vid1).out(\"created\").values(\"name\").fold(), 
__.V(vid3).out(\"created\").values(\"name\").fold()))",
+                "python": "g.V().has_label('software').has('name', 
P.without(__.V(vid1).out('created').values('name').fold(), 
__.V(vid3).out('created').values('name').fold()))"
             }
         ]
     },
@@ -9895,16 +9895,16 @@
         "scenario": 
"g_V_hasLabelXpersonX_valuesXageX_isXwithinXVXvid1X_valuesXageX_V_hasXname_lopX_inXcreatedX_valuesXageXXX",
         "traversals": [
             {
-                "original": 
"g.V().hasLabel(\"person\").values(\"age\").is(P.within(__.V(vid1).values(\"age\"),
 __.V().has(\"name\",\"lop\").in(\"created\").values(\"age\")))",
-                "language": 
"g.V().hasLabel(\"person\").values(\"age\").is(P.within(__.V(vid1).values(\"age\"),
 __.V().has(\"name\", \"lop\").in(\"created\").values(\"age\")))",
-                "canonical": 
"g.V().hasLabel(\"person\").values(\"age\").is(P.within(__.V(vid1).values(\"age\"),
 __.V().has(\"name\", \"lop\").in(\"created\").values(\"age\")))",
-                "anonymized": 
"g.V().hasLabel(string0).values(string1).is(P.within(__.V(vid1).values(string1),
 __.V().has(string2, string3).in(string4).values(string1)))",
-                "dotnet": 
"g.V().HasLabel(\"person\").Values<object>(\"age\").Is(P.Within(__.V(vid1).Values<object>(\"age\"),
 __.V().Has(\"name\", \"lop\").In(\"created\").Values<object>(\"age\")))",
-                "go": 
"g.V().HasLabel(\"person\").Values(\"age\").Is(gremlingo.P.Within(gremlingo.T__.V(vid1).Values(\"age\"),
 gremlingo.T__.V().Has(\"name\", \"lop\").In(\"created\").Values(\"age\")))",
-                "groovy": 
"g.V().hasLabel(\"person\").values(\"age\").is(P.within(__.V(vid1).values(\"age\"),
 __.V().has(\"name\", \"lop\").in(\"created\").values(\"age\")))",
-                "java": 
"g.V().hasLabel(\"person\").values(\"age\").is(P.within(__.V(vid1).values(\"age\"),
 __.V().has(\"name\", \"lop\").in(\"created\").values(\"age\")))",
-                "javascript": 
"g.V().hasLabel(\"person\").values(\"age\").is(P.within(__.V(vid1).values(\"age\"),
 __.V().has(\"name\", \"lop\").in_(\"created\").values(\"age\")))",
-                "python": 
"g.V().has_label('person').values('age').is_(P.within(__.V(vid1).values('age'), 
__.V().has('name', 'lop').in_('created').values('age')))"
+                "original": 
"g.V().hasLabel(\"person\").values(\"age\").is(P.within(__.V(vid1).values(\"age\").fold(),
 __.V().has(\"name\",\"lop\").in(\"created\").values(\"age\").fold()))",
+                "language": 
"g.V().hasLabel(\"person\").values(\"age\").is(P.within(__.V(vid1).values(\"age\").fold(),
 __.V().has(\"name\", \"lop\").in(\"created\").values(\"age\").fold()))",
+                "canonical": 
"g.V().hasLabel(\"person\").values(\"age\").is(P.within(__.V(vid1).values(\"age\").fold(),
 __.V().has(\"name\", \"lop\").in(\"created\").values(\"age\").fold()))",
+                "anonymized": 
"g.V().hasLabel(string0).values(string1).is(P.within(__.V(vid1).values(string1).fold(),
 __.V().has(string2, string3).in(string4).values(string1).fold()))",
+                "dotnet": 
"g.V().HasLabel(\"person\").Values<object>(\"age\").Is(P.Within(__.V(vid1).Values<object>(\"age\").Fold(),
 __.V().Has(\"name\", 
\"lop\").In(\"created\").Values<object>(\"age\").Fold()))",
+                "go": 
"g.V().HasLabel(\"person\").Values(\"age\").Is(gremlingo.P.Within(gremlingo.T__.V(vid1).Values(\"age\").Fold(),
 gremlingo.T__.V().Has(\"name\", 
\"lop\").In(\"created\").Values(\"age\").Fold()))",
+                "groovy": 
"g.V().hasLabel(\"person\").values(\"age\").is(P.within(__.V(vid1).values(\"age\").fold(),
 __.V().has(\"name\", \"lop\").in(\"created\").values(\"age\").fold()))",
+                "java": 
"g.V().hasLabel(\"person\").values(\"age\").is(P.within(__.V(vid1).values(\"age\").fold(),
 __.V().has(\"name\", \"lop\").in(\"created\").values(\"age\").fold()))",
+                "javascript": 
"g.V().hasLabel(\"person\").values(\"age\").is(P.within(__.V(vid1).values(\"age\").fold(),
 __.V().has(\"name\", \"lop\").in_(\"created\").values(\"age\").fold()))",
+                "python": 
"g.V().has_label('person').values('age').is_(P.within(__.V(vid1).values('age').fold(),
 __.V().has('name', 'lop').in_('created').values('age').fold()))"
             }
         ]
     },
@@ -9912,16 +9912,16 @@
         "scenario": 
"g_VXvid1X_outEXknowsX_filterXinV_hasXname_withinXV_hasXname_lopX_inXcreatedX_valuesXnameX_V_hasXname_rippleX_inXcreatedX_valuesXnameXXXX",
         "traversals": [
             {
-                "original": 
"g.V(vid1).outE(\"knows\").filter(__.inV().has(\"name\", 
P.within(__.V().has(\"name\",\"lop\").in(\"created\").values(\"name\"), 
__.V().has(\"name\",\"ripple\").in(\"created\").values(\"name\"))))",
-                "language": 
"g.V(vid1).outE(\"knows\").filter(__.inV().has(\"name\", 
P.within(__.V().has(\"name\", \"lop\").in(\"created\").values(\"name\"), 
__.V().has(\"name\", \"ripple\").in(\"created\").values(\"name\"))))",
-                "canonical": 
"g.V(vid1).outE(\"knows\").filter(__.inV().has(\"name\", 
P.within(__.V().has(\"name\", \"lop\").in(\"created\").values(\"name\"), 
__.V().has(\"name\", \"ripple\").in(\"created\").values(\"name\"))))",
-                "anonymized": 
"g.V(vid1).outE(string0).filter(__.inV().has(string1, 
P.within(__.V().has(string1, string2).in(string3).values(string1), 
__.V().has(string1, string4).in(string3).values(string1))))",
-                "dotnet": 
"g.V(vid1).OutE(\"knows\").Filter(__.InV().Has(\"name\", 
P.Within(__.V().Has(\"name\", 
\"lop\").In(\"created\").Values<object>(\"name\"), __.V().Has(\"name\", 
\"ripple\").In(\"created\").Values<object>(\"name\"))))",
-                "go": 
"g.V(vid1).OutE(\"knows\").Filter(gremlingo.T__.InV().Has(\"name\", 
gremlingo.P.Within(gremlingo.T__.V().Has(\"name\", 
\"lop\").In(\"created\").Values(\"name\"), gremlingo.T__.V().Has(\"name\", 
\"ripple\").In(\"created\").Values(\"name\"))))",
-                "groovy": 
"g.V(vid1).outE(\"knows\").filter(__.inV().has(\"name\", 
P.within(__.V().has(\"name\", \"lop\").in(\"created\").values(\"name\"), 
__.V().has(\"name\", \"ripple\").in(\"created\").values(\"name\"))))",
-                "java": 
"g.V(vid1).outE(\"knows\").filter(__.inV().has(\"name\", 
P.within(__.V().has(\"name\", \"lop\").in(\"created\").values(\"name\"), 
__.V().has(\"name\", \"ripple\").in(\"created\").values(\"name\"))))",
-                "javascript": 
"g.V(vid1).outE(\"knows\").filter(__.inV().has(\"name\", 
P.within(__.V().has(\"name\", \"lop\").in_(\"created\").values(\"name\"), 
__.V().has(\"name\", \"ripple\").in_(\"created\").values(\"name\"))))",
-                "python": 
"g.V(vid1).out_e('knows').filter_(__.in_v().has('name', 
P.within(__.V().has('name', 'lop').in_('created').values('name'), 
__.V().has('name', 'ripple').in_('created').values('name'))))"
+                "original": 
"g.V(vid1).outE(\"knows\").filter(__.inV().has(\"name\", 
P.within(__.V().has(\"name\",\"lop\").in(\"created\").values(\"name\").fold(), 
__.V().has(\"name\",\"ripple\").in(\"created\").values(\"name\").fold())))",
+                "language": 
"g.V(vid1).outE(\"knows\").filter(__.inV().has(\"name\", 
P.within(__.V().has(\"name\", \"lop\").in(\"created\").values(\"name\").fold(), 
__.V().has(\"name\", \"ripple\").in(\"created\").values(\"name\").fold())))",
+                "canonical": 
"g.V(vid1).outE(\"knows\").filter(__.inV().has(\"name\", 
P.within(__.V().has(\"name\", \"lop\").in(\"created\").values(\"name\").fold(), 
__.V().has(\"name\", \"ripple\").in(\"created\").values(\"name\").fold())))",
+                "anonymized": 
"g.V(vid1).outE(string0).filter(__.inV().has(string1, 
P.within(__.V().has(string1, string2).in(string3).values(string1).fold(), 
__.V().has(string1, string4).in(string3).values(string1).fold())))",
+                "dotnet": 
"g.V(vid1).OutE(\"knows\").Filter(__.InV().Has(\"name\", 
P.Within(__.V().Has(\"name\", 
\"lop\").In(\"created\").Values<object>(\"name\").Fold(), __.V().Has(\"name\", 
\"ripple\").In(\"created\").Values<object>(\"name\").Fold())))",
+                "go": 
"g.V(vid1).OutE(\"knows\").Filter(gremlingo.T__.InV().Has(\"name\", 
gremlingo.P.Within(gremlingo.T__.V().Has(\"name\", 
\"lop\").In(\"created\").Values(\"name\").Fold(), 
gremlingo.T__.V().Has(\"name\", 
\"ripple\").In(\"created\").Values(\"name\").Fold())))",
+                "groovy": 
"g.V(vid1).outE(\"knows\").filter(__.inV().has(\"name\", 
P.within(__.V().has(\"name\", \"lop\").in(\"created\").values(\"name\").fold(), 
__.V().has(\"name\", \"ripple\").in(\"created\").values(\"name\").fold())))",
+                "java": 
"g.V(vid1).outE(\"knows\").filter(__.inV().has(\"name\", 
P.within(__.V().has(\"name\", \"lop\").in(\"created\").values(\"name\").fold(), 
__.V().has(\"name\", \"ripple\").in(\"created\").values(\"name\").fold())))",
+                "javascript": 
"g.V(vid1).outE(\"knows\").filter(__.inV().has(\"name\", 
P.within(__.V().has(\"name\", 
\"lop\").in_(\"created\").values(\"name\").fold(), __.V().has(\"name\", 
\"ripple\").in_(\"created\").values(\"name\").fold())))",
+                "python": 
"g.V(vid1).out_e('knows').filter_(__.in_v().has('name', 
P.within(__.V().has('name', 'lop').in_('created').values('name').fold(), 
__.V().has('name', 'ripple').in_('created').values('name').fold())))"
             }
         ]
     },
@@ -10201,16 +10201,16 @@
         "scenario": 
"g_V_valuesXageX_isXwithinXVXvid1X_outXknowsX_valuesXageXXX",
         "traversals": [
             {
-                "original": 
"g.V().values(\"age\").is(P.within(__.V(vid1).out(\"knows\").values(\"age\")))",
-                "language": 
"g.V().values(\"age\").is(P.within(__.V(vid1).out(\"knows\").values(\"age\")))",
-                "canonical": 
"g.V().values(\"age\").is(P.within(__.V(vid1).out(\"knows\").values(\"age\")))",
-                "anonymized": 
"g.V().values(string0).is(P.within(__.V(vid1).out(string1).values(string0)))",
-                "dotnet": 
"g.V().Values<object>(\"age\").Is(P.Within(__.V(vid1).Out(\"knows\").Values<object>(\"age\")))",
-                "go": 
"g.V().Values(\"age\").Is(gremlingo.P.Within(gremlingo.T__.V(vid1).Out(\"knows\").Values(\"age\")))",
-                "groovy": 
"g.V().values(\"age\").is(P.within(__.V(vid1).out(\"knows\").values(\"age\")))",
-                "java": 
"g.V().values(\"age\").is(P.within(__.V(vid1).out(\"knows\").values(\"age\")))",
-                "javascript": 
"g.V().values(\"age\").is(P.within(__.V(vid1).out(\"knows\").values(\"age\")))",
-                "python": 
"g.V().values('age').is_(P.within(__.V(vid1).out('knows').values('age')))"
+                "original": 
"g.V().values(\"age\").is(P.within(__.V(vid1).out(\"knows\").values(\"age\").fold()))",
+                "language": 
"g.V().values(\"age\").is(P.within(__.V(vid1).out(\"knows\").values(\"age\").fold()))",
+                "canonical": 
"g.V().values(\"age\").is(P.within(__.V(vid1).out(\"knows\").values(\"age\").fold()))",
+                "anonymized": 
"g.V().values(string0).is(P.within(__.V(vid1).out(string1).values(string0).fold()))",
+                "dotnet": 
"g.V().Values<object>(\"age\").Is(P.Within(__.V(vid1).Out(\"knows\").Values<object>(\"age\").Fold()))",
+                "go": 
"g.V().Values(\"age\").Is(gremlingo.P.Within(gremlingo.T__.V(vid1).Out(\"knows\").Values(\"age\").Fold()))",
+                "groovy": 
"g.V().values(\"age\").is(P.within(__.V(vid1).out(\"knows\").values(\"age\").fold()))",
+                "java": 
"g.V().values(\"age\").is(P.within(__.V(vid1).out(\"knows\").values(\"age\").fold()))",
+                "javascript": 
"g.V().values(\"age\").is(P.within(__.V(vid1).out(\"knows\").values(\"age\").fold()))",
+                "python": 
"g.V().values('age').is_(P.within(__.V(vid1).out('knows').values('age').fold()))"
             }
         ]
     },
@@ -13431,16 +13431,16 @@
         "scenario": 
"g_V_valuesXageX_whereXwithinXVXvid1X_outXknowsX_valuesXageXXX",
         "traversals": [
             {
-                "original": 
"g.V().values(\"age\").where(P.within(__.V(vid1).out(\"knows\").values(\"age\")))",
-                "language": 
"g.V().values(\"age\").where(P.within(__.V(vid1).out(\"knows\").values(\"age\")))",
-                "canonical": 
"g.V().values(\"age\").where(P.within(__.V(vid1).out(\"knows\").values(\"age\")))",
-                "anonymized": 
"g.V().values(string0).where(P.within(__.V(vid1).out(string1).values(string0)))",
-                "dotnet": 
"g.V().Values<object>(\"age\").Where(P.Within(__.V(vid1).Out(\"knows\").Values<object>(\"age\")))",
-                "go": 
"g.V().Values(\"age\").Where(gremlingo.P.Within(gremlingo.T__.V(vid1).Out(\"knows\").Values(\"age\")))",
-                "groovy": 
"g.V().values(\"age\").where(P.within(__.V(vid1).out(\"knows\").values(\"age\")))",
-                "java": 
"g.V().values(\"age\").where(P.within(__.V(vid1).out(\"knows\").values(\"age\")))",
-                "javascript": 
"g.V().values(\"age\").where(P.within(__.V(vid1).out(\"knows\").values(\"age\")))",
-                "python": 
"g.V().values('age').where(P.within(__.V(vid1).out('knows').values('age')))"
+                "original": 
"g.V().values(\"age\").where(P.within(__.V(vid1).out(\"knows\").values(\"age\").fold()))",
+                "language": 
"g.V().values(\"age\").where(P.within(__.V(vid1).out(\"knows\").values(\"age\").fold()))",
+                "canonical": 
"g.V().values(\"age\").where(P.within(__.V(vid1).out(\"knows\").values(\"age\").fold()))",
+                "anonymized": 
"g.V().values(string0).where(P.within(__.V(vid1).out(string1).values(string0).fold()))",
+                "dotnet": 
"g.V().Values<object>(\"age\").Where(P.Within(__.V(vid1).Out(\"knows\").Values<object>(\"age\").Fold()))",
+                "go": 
"g.V().Values(\"age\").Where(gremlingo.P.Within(gremlingo.T__.V(vid1).Out(\"knows\").Values(\"age\").Fold()))",
+                "groovy": 
"g.V().values(\"age\").where(P.within(__.V(vid1).out(\"knows\").values(\"age\").fold()))",
+                "java": 
"g.V().values(\"age\").where(P.within(__.V(vid1).out(\"knows\").values(\"age\").fold()))",
+                "javascript": 
"g.V().values(\"age\").where(P.within(__.V(vid1).out(\"knows\").values(\"age\").fold()))",
+                "python": 
"g.V().values('age').where(P.within(__.V(vid1).out('knows').values('age').fold()))"
             }
         ]
     },
diff --git 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/HasTraversal.feature
 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/HasTraversal.feature
index 8479eeac33..d9e521c21c 100644
--- 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/HasTraversal.feature
+++ 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/HasTraversal.feature
@@ -204,14 +204,14 @@ Feature: Step - has() with traversal arguments
       | result |
       | d[29].i |
 
-  # Multi-traversal within() where one traversal produces multiple results
+  # Multi-traversal within() where one traversal produces multiple results — 
use fold() to collect
   @GraphComputerVerificationMidVNotSupported
   Scenario: 
g_V_hasXname_withinXVXvid1X_outXknowsX_valuesXnameX_constantXpeterXXX
     Given the modern graph
     And using the parameter vid1 defined as "v[marko].id"
     And the traversal of
       """
-      g.V().has("name", P.within(__.V(vid1).out("knows").values("name"), 
__.constant("peter")))
+      g.V().has("name", 
P.within(__.V(vid1).out("knows").values("name").fold(), __.constant("peter")))
       """
     When iterated to list
     Then the result should be unordered
@@ -272,7 +272,7 @@ Feature: Step - has() with traversal arguments
     And using the parameter vid3 defined as "v[josh].id"
     And the traversal of
       """
-      g.V().has("name", P.within(__.V(vid1).out("knows").values("name"), 
__.V(vid3).out("created").values("name")))
+      g.V().has("name", 
P.within(__.V(vid1).out("knows").values("name").fold(), 
__.V(vid3).out("created").values("name").fold()))
       """
     When iterated to list
     Then the result should be unordered
@@ -290,19 +290,19 @@ Feature: Step - has() with traversal arguments
     And using the parameter vid3 defined as "v[josh].id"
     And the traversal of
       """
-      g.V().hasLabel("software").has("name", 
P.without(__.V(vid1).out("created").values("name"), 
__.V(vid3).out("created").values("name")))
+      g.V().hasLabel("software").has("name", 
P.without(__.V(vid1).out("created").values("name").fold(), 
__.V(vid3).out("created").values("name").fold()))
       """
     When iterated to list
     Then the result should be empty
 
-  # Multi-traversal within() with is() — cross-label dynamic filtering
+  # Multi-traversal within() with is() — cross-label dynamic filtering, use 
fold() for multi-result
   @GraphComputerVerificationMidVNotSupported
   Scenario: 
g_V_hasLabelXpersonX_valuesXageX_isXwithinXVXvid1X_valuesXageX_V_hasXname_lopX_inXcreatedX_valuesXageXXX
     Given the modern graph
     And using the parameter vid1 defined as "v[marko].id"
     And the traversal of
       """
-      
g.V().hasLabel("person").values("age").is(P.within(__.V(vid1).values("age"), 
__.V().has("name","lop").in("created").values("age")))
+      
g.V().hasLabel("person").values("age").is(P.within(__.V(vid1).values("age").fold(),
 __.V().has("name","lop").in("created").values("age").fold()))
       """
     When iterated to list
     Then the result should be unordered
@@ -318,7 +318,7 @@ Feature: Step - has() with traversal arguments
     And using the parameter vid1 defined as "v[marko].id"
     And the traversal of
       """
-      g.V(vid1).outE("knows").filter(__.inV().has("name", 
P.within(__.V().has("name","lop").in("created").values("name"), 
__.V().has("name","ripple").in("created").values("name"))))
+      g.V(vid1).outE("knows").filter(__.inV().has("name", 
P.within(__.V().has("name","lop").in("created").values("name").fold(), 
__.V().has("name","ripple").in("created").values("name").fold())))
       """
     When iterated to list
     Then the result should be unordered
diff --git 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/IsTraversal.feature
 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/IsTraversal.feature
index 42b1eb898b..4a70f2ba24 100644
--- 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/IsTraversal.feature
+++ 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/IsTraversal.feature
@@ -93,7 +93,7 @@ Feature: Step - is() with traversal-bearing predicates
     And using the parameter vid1 defined as "v[marko].id"
     And the traversal of
       """
-      g.V().values("age").is(P.within(__.V(vid1).out("knows").values("age")))
+      
g.V().values("age").is(P.within(__.V(vid1).out("knows").values("age").fold()))
       """
     When iterated to list
     Then the result should be unordered
diff --git 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/WhereTraversal.feature
 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/WhereTraversal.feature
index cf9628883a..abc91bbea6 100644
--- 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/WhereTraversal.feature
+++ 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/WhereTraversal.feature
@@ -69,7 +69,7 @@ Feature: Step - where(P) with traversal-bearing predicates
     And using the parameter vid1 defined as "v[marko].id"
     And the traversal of
       """
-      
g.V().values("age").where(P.within(__.V(vid1).out("knows").values("age")))
+      
g.V().values("age").where(P.within(__.V(vid1).out("knows").values("age").fold()))
       """
     When iterated to list
     Then the result should be unordered

Reply via email to