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 4a7f23e52cce919177d548b1876458efd963475e
Author: Yang Xia <[email protected]>
AuthorDate: Thu Jun 4 22:21:26 2026 -0700

    restrict P(Traversal) in union()
---
 .../traversal/dsl/graph/GraphTraversal.java        |  8 +++
 .../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs | 10 ++--
 gremlin-go/driver/cucumber/gremlin.go              |  6 +--
 .../gremlin-javascript/test/cucumber/gremlin.js    |  6 +--
 .../src/main/python/tests/feature/gremlin.py       |  6 +--
 .../gremlin/language/translator/translations.json  | 60 +++++++++++-----------
 .../test/features/filter/IsTraversal.feature       |  6 +--
 7 files changed, 55 insertions(+), 47 deletions(-)

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 e015e708cb..fcf46d23f4 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
@@ -4112,6 +4112,10 @@ public interface GraphTraversal<S, E> extends 
Traversal<S, E> {
         if (choosePredicate.isParameterized()) {
             throw new IllegalArgumentException("Parameterized predicates are 
not supported by choose()");
         }
+        if (choosePredicate.hasTraversal()) {
+            throw new IllegalArgumentException("Traversal-bearing predicates 
are not supported by choose(). " +
+                    "Use choose(__.is(P.op(traversal)), trueChoice, 
falseChoice) instead.");
+        }
         this.asAdmin().getGremlinLang().addStep(Symbols.choose, 
choosePredicate, trueChoice, falseChoice);
         return this.asAdmin().addStep(new ChooseStep<E, E2, 
Boolean>(this.asAdmin(), (Traversal.Admin<E, ?>) __.is(choosePredicate), 
(Traversal.Admin<E, E2>) trueChoice, (Traversal.Admin<E, E2>) falseChoice));
     }
@@ -4149,6 +4153,10 @@ public interface GraphTraversal<S, E> extends 
Traversal<S, E> {
         if (choosePredicate.isParameterized()) {
             throw new IllegalArgumentException("Parameterized predicates are 
not supported by choose()");
         }
+        if (choosePredicate.hasTraversal()) {
+            throw new IllegalArgumentException("Traversal-bearing predicates 
are not supported by choose(). " +
+                    "Use choose(__.is(P.op(traversal)), trueChoice) instead.");
+        }
         this.asAdmin().getGremlinLang().addStep(Symbols.choose, 
choosePredicate, trueChoice);
         return this.asAdmin().addStep(new ChooseStep<E, E2, 
Boolean>(this.asAdmin(), (Traversal.Admin<E, ?>) __.is(choosePredicate), 
(Traversal.Admin<E, E2>) trueChoice, (Traversal.Admin<E, E2>) __.identity()));
     }
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs 
b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
index e6040f7ba8..8881b5da07 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
@@ -589,8 +589,8 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
                {"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").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"))}}, 
+               
{"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>(__.Is(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>(__.Is(P.Gte(__.V().HasLabel("person").Values<object>("age").Mean<object>())),
 __.Constant<object>("above average"), __.Constant<object>("below average"))}}, 
                
{"g_VXvid1X_outXknowsX_valuesXageX_fold_allXgteXVXvid2X_valuesXageXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V(p["vid1"]).Out("knows").Values<object>("age").Fold().All(P.Gte(__.V(p["vid2"]).Values<object>("age")))}},
 
                
{"g_VXvid1X_outXknowsX_valuesXageX_fold_allXgtXVXvid2X_valuesXageXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V(p["vid1"]).Out("knows").Values<object>("age").Fold().All(P.Gt(__.V(p["vid2"]).Values<object>("age")))}},
 
                
{"g_VXvid1X_outXknowsX_valuesXageX_fold_anyXeqXVXvid3X_valuesXageXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V(p["vid1"]).Out("knows").Values<object>("age").Fold().Any(P.Eq(__.V(p["vid3"]).Values<object>("age")))}},
 
@@ -598,7 +598,7 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
                
{"g_VXvid1X_outXknowsX_valuesXageX_fold_noneXeqXVXvid3X_valuesXageXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V(p["vid1"]).Out("knows").Values<object>("age").Fold().None(P.Eq(__.V(p["vid3"]).Values<object>("age")))}},
 
                {"g_injectXnullX_isXeqXV9999_valuesXnameXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.Inject<object>(null).Is(P.Eq(__.V(9999).Values<object>("name")))}}, 
                {"g_injectXmarkoX_isXV9999_valuesXnameXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.Inject<object>("marko").Is(__.V(9999).Values<object>("name"))}}, 
-               
{"g_injectXmarkoX_chooseXeqXV9999_valuesXnameXX_matched_unmatchedX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.Inject<object>("marko").Choose<object>(P.Eq(__.V(9999).Values<object>("name")),
 __.Constant<object>("matched"), __.Constant<object>("unmatched"))}}, 
+               
{"g_injectXmarkoX_chooseXeqXV9999_valuesXnameXX_matched_unmatchedX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.Inject<object>("marko").Choose<object>(__.Is(P.Eq(__.V(9999).Values<object>("name"))),
 __.Constant<object>("matched"), __.Constant<object>("unmatched"))}}, 
                {"g_injectXlistX_noneXeqXV9999_valuesXnameXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.Inject<object>(new List<object> { "marko", "josh" 
}).None(P.Eq(__.V(9999).Values<object>("name")))}}, 
                {"g_V_hasXname_eqXV9999_valuesXnameXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Has("name", P.Eq(__.V(9999).Values<object>("name")))}}, 
                
{"g_V_valuesXageX_isXwithoutXVXvid1X_valuesXageX_VXvid2X_valuesXageXXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().Values<object>("age").Is(P.Without(__.V(p["vid1"]).Values<object>("age"),
 __.V(p["vid2"]).Values<object>("age")))}}, 
@@ -1012,9 +1012,9 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
                {"g_addV_propertyXsingle_mapX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV().Property(Cardinality.Single, new Dictionary<object, object> 
{{ "name", "foo" }, { "age", 42 }}), (g,p) =>g.V().Has("name", "foo")}}, 
                {"g_V_hasXname_fooX_propertyXname_setXbarX_age_43X", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV().Property(Cardinality.Single, "name", "foo").Property("age", 
42), (g,p) =>g.V().Has("name", "foo").Property(new Dictionary<object, object> 
{{ "name", CardinalityValue.Set("bar") }, { "age", 43 }}), (g,p) 
=>g.V().Has("name", "foo"), (g,p) =>g.V().Has("name", "bar"), (g,p) 
=>g.V().Has("age", 43), (g,p) =>g.V().Has("age", 42)}}, 
                {"g_V_hasXname_fooX_propertyXset_name_bar_age_singleX43XX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV().Property(Cardinality.Single, "name", "foo").Property("age", 
42), (g,p) =>g.V().Has("name", "foo").Property(Cardinality.Set, new 
Dictionary<object, object> {{ "name", "bar" }, { "age", 
CardinalityValue.Single(43) }}), (g,p) =>g.V().Has("name", "foo"), (g,p) 
=>g.V().Has("name", "bar"), (g,p) =>g.V().Has("age", 43), (g,p)  [...]
-               {"g_addV_propertyXnullX", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV((string) 
"person").Property(null), (g,p) =>g.V().HasLabel("person").Values<object>()}}, 
+               {"g_addV_propertyXnullX", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV((string) 
"person").Property((IDictionary<object, object>) null), (g,p) 
=>g.V().HasLabel("person").Values<object>()}}, 
                {"g_addV_propertyXemptyX", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV((string) 
"person").Property(new Dictionary<object, object> {}), (g,p) 
=>g.V().HasLabel("person").Values<object>()}}, 
-               {"g_addV_propertyXset_nullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV((string) "foo").Property(Cardinality.Set, null), (g,p) 
=>g.V().HasLabel("foo").Values<object>()}}, 
+               {"g_addV_propertyXset_nullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV((string) "foo").Property(Cardinality.Set, (IDictionary<object, 
object>) null), (g,p) =>g.V().HasLabel("foo").Values<object>()}}, 
                {"g_addV_propertyXset_emptyX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV((string) "foo").Property(Cardinality.Set, new 
Dictionary<object, object> {}), (g,p) 
=>g.V().HasLabel("person").Values<object>()}}, 
                {"g_addVXpersonX_propertyXname_joshX_propertyXage_nullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV((string) "person").Property("name", "josh").Property("age", 
null), (g,p) =>g.V().Has("person", "age", (object) null)}}, 
                
{"g_addVXpersonX_propertyXname_markoX_propertyXfriendWeight_null_acl_nullX", 
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV((string) "person").Property("name", 
"marko").Property("friendWeight", null, "acl", null), (g,p) 
=>g.V().Has("person", "name", "marko").Has("friendWeight", (object) null), 
(g,p) =>g.V().Has("person", "name", 
"marko").Properties<object>("friendWeight").Has("acl", (object) null), (g,p) 
=>g.V().Has("person",  [...]
diff --git a/gremlin-go/driver/cucumber/gremlin.go 
b/gremlin-go/driver/cucumber/gremlin.go
index 1a7bf90d0c..21fdbd5b0a 100644
--- a/gremlin-go/driver/cucumber/gremlin.go
+++ b/gremlin-go/driver/cucumber/gremlin.go
@@ -559,8 +559,8 @@ var translationMap = map[string][]func(g 
*gremlingo.GraphTraversalSource, p map[
     "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").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"))}}, 
+    "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.T__.Is(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.T__.Is(gremlingo.P.Gte(gremlingo.T__.V().HasLabel("person").Values("age").Mean())),
 gremlingo.T__.Constant("above average"), gremlingo.T__.Constant("below 
average"))}}, 
     "g_VXvid1X_outXknowsX_valuesXageX_fold_allXgteXVXvid2X_valuesXageXXX": 
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V(p["vid1"]).Out("knows").Values("age").Fold().All(gremlingo.P.Gte(gremlingo.T__.V(p["vid2"]).Values("age")))}},
 
     "g_VXvid1X_outXknowsX_valuesXageX_fold_allXgtXVXvid2X_valuesXageXXX": 
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V(p["vid1"]).Out("knows").Values("age").Fold().All(gremlingo.P.Gt(gremlingo.T__.V(p["vid2"]).Values("age")))}},
 
     "g_VXvid1X_outXknowsX_valuesXageX_fold_anyXeqXVXvid3X_valuesXageXXX": 
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V(p["vid1"]).Out("knows").Values("age").Fold().Any(gremlingo.P.Eq(gremlingo.T__.V(p["vid3"]).Values("age")))}},
 
@@ -568,7 +568,7 @@ var translationMap = map[string][]func(g 
*gremlingo.GraphTraversalSource, p map[
     "g_VXvid1X_outXknowsX_valuesXageX_fold_noneXeqXVXvid3X_valuesXageXXX": 
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V(p["vid1"]).Out("knows").Values("age").Fold().None(gremlingo.P.Eq(gremlingo.T__.V(p["vid3"]).Values("age")))}},
 
     "g_injectXnullX_isXeqXV9999_valuesXnameXXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.Inject(nil).Is(gremlingo.P.Eq(gremlingo.T__.V(9999).Values("name")))}}, 
     "g_injectXmarkoX_isXV9999_valuesXnameXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.Inject("marko").Is(gremlingo.T__.V(9999).Values("name"))}}, 
-    "g_injectXmarkoX_chooseXeqXV9999_valuesXnameXX_matched_unmatchedX": 
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.Inject("marko").Choose(gremlingo.P.Eq(gremlingo.T__.V(9999).Values("name")), 
gremlingo.T__.Constant("matched"), gremlingo.T__.Constant("unmatched"))}}, 
+    "g_injectXmarkoX_chooseXeqXV9999_valuesXnameXX_matched_unmatchedX": 
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.Inject("marko").Choose(gremlingo.T__.Is(gremlingo.P.Eq(gremlingo.T__.V(9999).Values("name"))),
 gremlingo.T__.Constant("matched"), gremlingo.T__.Constant("unmatched"))}}, 
     "g_injectXlistX_noneXeqXV9999_valuesXnameXXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.Inject([]interface{}{"marko", 
"josh"}).None(gremlingo.P.Eq(gremlingo.T__.V(9999).Values("name")))}}, 
     "g_V_hasXname_eqXV9999_valuesXnameXXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Has("name", 
gremlingo.P.Eq(gremlingo.T__.V(9999).Values("name")))}}, 
     "g_V_valuesXageX_isXwithoutXVXvid1X_valuesXageX_VXvid2X_valuesXageXXX": 
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("age").Is(gremlingo.P.Without(gremlingo.T__.V(p["vid1"]).Values("age"),
 gremlingo.T__.V(p["vid2"]).Values("age")))}}, 
diff --git a/gremlin-js/gremlin-javascript/test/cucumber/gremlin.js 
b/gremlin-js/gremlin-javascript/test/cucumber/gremlin.js
index ea9b014ee2..dbdbb02d55 100644
--- a/gremlin-js/gremlin-javascript/test/cucumber/gremlin.js
+++ b/gremlin-js/gremlin-javascript/test/cucumber/gremlin.js
@@ -590,8 +590,8 @@ const gremlins = {
     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").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")) }], 
+    g_V_hasLabelXpersonX_valuesXageX_chooseXgtXVXvid1X_valuesXageXX_olderX: 
[function({g, vid1}) { return 
g.V().hasLabel("person").values("age").choose(__.is(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(__.is(P.gte(__.V().hasLabel("person").values("age").mean())),
 __.constant("above average"), __.constant("below average")) }], 
     g_VXvid1X_outXknowsX_valuesXageX_fold_allXgteXVXvid2X_valuesXageXXX: 
[function({g, vid2, vid1}) { return 
g.V(vid1).out("knows").values("age").fold().all(P.gte(__.V(vid2).values("age")))
 }], 
     g_VXvid1X_outXknowsX_valuesXageX_fold_allXgtXVXvid2X_valuesXageXXX: 
[function({g, vid2, vid1}) { return 
g.V(vid1).out("knows").values("age").fold().all(P.gt(__.V(vid2).values("age"))) 
}], 
     g_VXvid1X_outXknowsX_valuesXageX_fold_anyXeqXVXvid3X_valuesXageXXX: 
[function({g, vid3, vid1}) { return 
g.V(vid1).out("knows").values("age").fold().any(P.eq(__.V(vid3).values("age"))) 
}], 
@@ -599,7 +599,7 @@ const gremlins = {
     g_VXvid1X_outXknowsX_valuesXageX_fold_noneXeqXVXvid3X_valuesXageXXX: 
[function({g, vid3, vid1}) { return 
g.V(vid1).out("knows").values("age").fold().none(P.eq(__.V(vid3).values("age")))
 }], 
     g_injectXnullX_isXeqXV9999_valuesXnameXXX: [function({g}) { return 
g.inject(null).is(P.eq(__.V(9999).values("name"))) }], 
     g_injectXmarkoX_isXV9999_valuesXnameXX: [function({g}) { return 
g.inject("marko").is(__.V(9999).values("name")) }], 
-    g_injectXmarkoX_chooseXeqXV9999_valuesXnameXX_matched_unmatchedX: 
[function({g}) { return 
g.inject("marko").choose(P.eq(__.V(9999).values("name")), 
__.constant("matched"), __.constant("unmatched")) }], 
+    g_injectXmarkoX_chooseXeqXV9999_valuesXnameXX_matched_unmatchedX: 
[function({g}) { return 
g.inject("marko").choose(__.is(P.eq(__.V(9999).values("name"))), 
__.constant("matched"), __.constant("unmatched")) }], 
     g_injectXlistX_noneXeqXV9999_valuesXnameXXX: [function({g}) { return 
g.inject(["marko", "josh"]).none(P.eq(__.V(9999).values("name"))) }], 
     g_V_hasXname_eqXV9999_valuesXnameXXX: [function({g}) { return 
g.V().has("name", P.eq(__.V(9999).values("name"))) }], 
     g_V_valuesXageX_isXwithoutXVXvid1X_valuesXageX_VXvid2X_valuesXageXXX: 
[function({g, vid2, vid1}) { return 
g.V().values("age").is(P.without(__.V(vid1).values("age"), 
__.V(vid2).values("age"))) }], 
diff --git a/gremlin-python/src/main/python/tests/feature/gremlin.py 
b/gremlin-python/src/main/python/tests/feature/gremlin.py
index eb3fcb11df..b7057b9ebc 100644
--- a/gremlin-python/src/main/python/tests/feature/gremlin.py
+++ b/gremlin-python/src/main/python/tests/feature/gremlin.py
@@ -564,8 +564,8 @@ world.gremlins = {
     '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').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')))], 
+    'g_V_hasLabelXpersonX_valuesXageX_chooseXgtXVXvid1X_valuesXageXX_olderX': 
[(lambda g, 
vid1=None:g.V().has_label('person').values('age').choose(__.is_(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(__.is_(P.gte(__.V().has_label('person').values('age').mean())),
 __.constant('above average'), __.constant('below average')))], 
     'g_VXvid1X_outXknowsX_valuesXageX_fold_allXgteXVXvid2X_valuesXageXXX': 
[(lambda g, 
vid2=None,vid1=None:g.V(vid1).out('knows').values('age').fold().all_(P.gte(__.V(vid2).values('age'))))],
 
     'g_VXvid1X_outXknowsX_valuesXageX_fold_allXgtXVXvid2X_valuesXageXXX': 
[(lambda g, 
vid2=None,vid1=None:g.V(vid1).out('knows').values('age').fold().all_(P.gt(__.V(vid2).values('age'))))],
 
     'g_VXvid1X_outXknowsX_valuesXageX_fold_anyXeqXVXvid3X_valuesXageXXX': 
[(lambda g, 
vid3=None,vid1=None:g.V(vid1).out('knows').values('age').fold().any_(P.eq(__.V(vid3).values('age'))))],
 
@@ -573,7 +573,7 @@ world.gremlins = {
     'g_VXvid1X_outXknowsX_valuesXageX_fold_noneXeqXVXvid3X_valuesXageXXX': 
[(lambda g, 
vid3=None,vid1=None:g.V(vid1).out('knows').values('age').fold().none(P.eq(__.V(vid3).values('age'))))],
 
     'g_injectXnullX_isXeqXV9999_valuesXnameXXX': [(lambda 
g:g.inject(None).is_(P.eq(__.V(9999).values('name'))))], 
     'g_injectXmarkoX_isXV9999_valuesXnameXX': [(lambda 
g:g.inject('marko').is_(__.V(9999).values('name')))], 
-    'g_injectXmarkoX_chooseXeqXV9999_valuesXnameXX_matched_unmatchedX': 
[(lambda g:g.inject('marko').choose(P.eq(__.V(9999).values('name')), 
__.constant('matched'), __.constant('unmatched')))], 
+    'g_injectXmarkoX_chooseXeqXV9999_valuesXnameXX_matched_unmatchedX': 
[(lambda g:g.inject('marko').choose(__.is_(P.eq(__.V(9999).values('name'))), 
__.constant('matched'), __.constant('unmatched')))], 
     'g_injectXlistX_noneXeqXV9999_valuesXnameXXX': [(lambda 
g:g.inject(['marko', 'josh']).none(P.eq(__.V(9999).values('name'))))], 
     'g_V_hasXname_eqXV9999_valuesXnameXXX': [(lambda g:g.V().has('name', 
P.eq(__.V(9999).values('name'))))], 
     'g_V_valuesXageX_isXwithoutXVXvid1X_valuesXageX_VXvid2X_valuesXageXXX': 
[(lambda g, 
vid2=None,vid1=None:g.V().values('age').is_(P.without(__.V(vid1).values('age'), 
__.V(vid2).values('age'))))], 
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 f59fb17768..64e585b07c 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
@@ -10235,16 +10235,16 @@
         "scenario": 
"g_V_hasLabelXpersonX_valuesXageX_chooseXgtXVXvid1X_valuesXageXX_olderX",
         "traversals": [
             {
-                "original": 
"g.V().hasLabel(\"person\").values(\"age\").choose(P.gt(__.V(vid1).values(\"age\")),
 __.constant(\"older than marko\"), __.constant(\"not older\"))",
-                "language": 
"g.V().hasLabel(\"person\").values(\"age\").choose(P.gt(__.V(vid1).values(\"age\")),
 __.constant(\"older than marko\"), __.constant(\"not older\"))",
-                "canonical": 
"g.V().hasLabel(\"person\").values(\"age\").choose(P.gt(__.V(vid1).values(\"age\")),
 __.constant(\"older than marko\"), __.constant(\"not older\"))",
-                "anonymized": 
"g.V().hasLabel(string0).values(string1).choose(P.gt(__.V(vid1).values(string1)),
 __.constant(string2), __.constant(string3))",
-                "dotnet": 
"g.V().HasLabel(\"person\").Values<object>(\"age\").Choose<object>(P.Gt(__.V(vid1).Values<object>(\"age\")),
 __.Constant<object>(\"older than marko\"), __.Constant<object>(\"not 
older\"))",
-                "go": 
"g.V().HasLabel(\"person\").Values(\"age\").Choose(gremlingo.P.Gt(gremlingo.T__.V(vid1).Values(\"age\")),
 gremlingo.T__.Constant(\"older than marko\"), gremlingo.T__.Constant(\"not 
older\"))",
-                "groovy": 
"g.V().hasLabel(\"person\").values(\"age\").choose(P.gt(__.V(vid1).values(\"age\")),
 __.constant(\"older than marko\"), __.constant(\"not older\"))",
-                "java": 
"g.V().hasLabel(\"person\").values(\"age\").choose(P.gt(__.V(vid1).values(\"age\")),
 __.constant(\"older than marko\"), __.constant(\"not older\"))",
-                "javascript": 
"g.V().hasLabel(\"person\").values(\"age\").choose(P.gt(__.V(vid1).values(\"age\")),
 __.constant(\"older than marko\"), __.constant(\"not older\"))",
-                "python": 
"g.V().has_label('person').values('age').choose(P.gt(__.V(vid1).values('age')), 
__.constant('older than marko'), __.constant('not older'))"
+                "original": 
"g.V().hasLabel(\"person\").values(\"age\").choose(__.is(P.gt(__.V(vid1).values(\"age\"))),
 __.constant(\"older than marko\"), __.constant(\"not older\"))",
+                "language": 
"g.V().hasLabel(\"person\").values(\"age\").choose(__.is(P.gt(__.V(vid1).values(\"age\"))),
 __.constant(\"older than marko\"), __.constant(\"not older\"))",
+                "canonical": 
"g.V().hasLabel(\"person\").values(\"age\").choose(__.is(P.gt(__.V(vid1).values(\"age\"))),
 __.constant(\"older than marko\"), __.constant(\"not older\"))",
+                "anonymized": 
"g.V().hasLabel(string0).values(string1).choose(__.is(P.gt(__.V(vid1).values(string1))),
 __.constant(string2), __.constant(string3))",
+                "dotnet": 
"g.V().HasLabel(\"person\").Values<object>(\"age\").Choose<object>(__.Is(P.Gt(__.V(vid1).Values<object>(\"age\"))),
 __.Constant<object>(\"older than marko\"), __.Constant<object>(\"not 
older\"))",
+                "go": 
"g.V().HasLabel(\"person\").Values(\"age\").Choose(gremlingo.T__.Is(gremlingo.P.Gt(gremlingo.T__.V(vid1).Values(\"age\"))),
 gremlingo.T__.Constant(\"older than marko\"), gremlingo.T__.Constant(\"not 
older\"))",
+                "groovy": 
"g.V().hasLabel(\"person\").values(\"age\").choose(__.is(P.gt(__.V(vid1).values(\"age\"))),
 __.constant(\"older than marko\"), __.constant(\"not older\"))",
+                "java": 
"g.V().hasLabel(\"person\").values(\"age\").choose(__.is(P.gt(__.V(vid1).values(\"age\"))),
 __.constant(\"older than marko\"), __.constant(\"not older\"))",
+                "javascript": 
"g.V().hasLabel(\"person\").values(\"age\").choose(__.is(P.gt(__.V(vid1).values(\"age\"))),
 __.constant(\"older than marko\"), __.constant(\"not older\"))",
+                "python": 
"g.V().has_label('person').values('age').choose(__.is_(P.gt(__.V(vid1).values('age'))),
 __.constant('older than marko'), __.constant('not older'))"
             }
         ]
     },
@@ -10252,16 +10252,16 @@
         "scenario": 
"g_V_hasLabelXpersonX_valuesXageX_chooseXgteXmeanAgeX_aboveX",
         "traversals": [
             {
-                "original": 
"g.V().hasLabel(\"person\").values(\"age\").choose(P.gte(__.V().hasLabel(\"person\").values(\"age\").mean()),
 __.constant(\"above average\"), __.constant(\"below average\"))",
-                "language": 
"g.V().hasLabel(\"person\").values(\"age\").choose(P.gte(__.V().hasLabel(\"person\").values(\"age\").mean()),
 __.constant(\"above average\"), __.constant(\"below average\"))",
-                "canonical": 
"g.V().hasLabel(\"person\").values(\"age\").choose(P.gte(__.V().hasLabel(\"person\").values(\"age\").mean()),
 __.constant(\"above average\"), __.constant(\"below average\"))",
-                "anonymized": 
"g.V().hasLabel(string0).values(string1).choose(P.gte(__.V().hasLabel(string0).values(string1).mean()),
 __.constant(string2), __.constant(string3))",
-                "dotnet": 
"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\"))",
-                "go": 
"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\"))",
-                "groovy": 
"g.V().hasLabel(\"person\").values(\"age\").choose(P.gte(__.V().hasLabel(\"person\").values(\"age\").mean()),
 __.constant(\"above average\"), __.constant(\"below average\"))",
-                "java": 
"g.V().hasLabel(\"person\").values(\"age\").choose(P.gte(__.V().hasLabel(\"person\").values(\"age\").mean()),
 __.constant(\"above average\"), __.constant(\"below average\"))",
-                "javascript": 
"g.V().hasLabel(\"person\").values(\"age\").choose(P.gte(__.V().hasLabel(\"person\").values(\"age\").mean()),
 __.constant(\"above average\"), __.constant(\"below average\"))",
-                "python": 
"g.V().has_label('person').values('age').choose(P.gte(__.V().has_label('person').values('age').mean()),
 __.constant('above average'), __.constant('below average'))"
+                "original": 
"g.V().hasLabel(\"person\").values(\"age\").choose(__.is(P.gte(__.V().hasLabel(\"person\").values(\"age\").mean())),
 __.constant(\"above average\"), __.constant(\"below average\"))",
+                "language": 
"g.V().hasLabel(\"person\").values(\"age\").choose(__.is(P.gte(__.V().hasLabel(\"person\").values(\"age\").mean())),
 __.constant(\"above average\"), __.constant(\"below average\"))",
+                "canonical": 
"g.V().hasLabel(\"person\").values(\"age\").choose(__.is(P.gte(__.V().hasLabel(\"person\").values(\"age\").mean())),
 __.constant(\"above average\"), __.constant(\"below average\"))",
+                "anonymized": 
"g.V().hasLabel(string0).values(string1).choose(__.is(P.gte(__.V().hasLabel(string0).values(string1).mean())),
 __.constant(string2), __.constant(string3))",
+                "dotnet": 
"g.V().HasLabel(\"person\").Values<object>(\"age\").Choose<object>(__.Is(P.Gte(__.V().HasLabel(\"person\").Values<object>(\"age\").Mean<object>())),
 __.Constant<object>(\"above average\"), __.Constant<object>(\"below 
average\"))",
+                "go": 
"g.V().HasLabel(\"person\").Values(\"age\").Choose(gremlingo.T__.Is(gremlingo.P.Gte(gremlingo.T__.V().HasLabel(\"person\").Values(\"age\").Mean())),
 gremlingo.T__.Constant(\"above average\"), gremlingo.T__.Constant(\"below 
average\"))",
+                "groovy": 
"g.V().hasLabel(\"person\").values(\"age\").choose(__.is(P.gte(__.V().hasLabel(\"person\").values(\"age\").mean())),
 __.constant(\"above average\"), __.constant(\"below average\"))",
+                "java": 
"g.V().hasLabel(\"person\").values(\"age\").choose(__.is(P.gte(__.V().hasLabel(\"person\").values(\"age\").mean())),
 __.constant(\"above average\"), __.constant(\"below average\"))",
+                "javascript": 
"g.V().hasLabel(\"person\").values(\"age\").choose(__.is(P.gte(__.V().hasLabel(\"person\").values(\"age\").mean())),
 __.constant(\"above average\"), __.constant(\"below average\"))",
+                "python": 
"g.V().has_label('person').values('age').choose(__.is_(P.gte(__.V().has_label('person').values('age').mean())),
 __.constant('above average'), __.constant('below average'))"
             }
         ]
     },
@@ -10388,16 +10388,16 @@
         "scenario": 
"g_injectXmarkoX_chooseXeqXV9999_valuesXnameXX_matched_unmatchedX",
         "traversals": [
             {
-                "original": 
"g.inject(\"marko\").choose(P.eq(__.V(9999).values(\"name\")), 
__.constant(\"matched\"), __.constant(\"unmatched\"))",
-                "language": 
"g.inject(\"marko\").choose(P.eq(__.V(9999).values(\"name\")), 
__.constant(\"matched\"), __.constant(\"unmatched\"))",
-                "canonical": 
"g.inject(\"marko\").choose(P.eq(__.V(9999).values(\"name\")), 
__.constant(\"matched\"), __.constant(\"unmatched\"))",
-                "anonymized": 
"g.inject(string0).choose(P.eq(__.V(number0).values(string1)), 
__.constant(string2), __.constant(string3))",
-                "dotnet": 
"g.Inject<object>(\"marko\").Choose<object>(P.Eq(__.V(9999).Values<object>(\"name\")),
 __.Constant<object>(\"matched\"), __.Constant<object>(\"unmatched\"))",
-                "go": 
"g.Inject(\"marko\").Choose(gremlingo.P.Eq(gremlingo.T__.V(9999).Values(\"name\")),
 gremlingo.T__.Constant(\"matched\"), gremlingo.T__.Constant(\"unmatched\"))",
-                "groovy": 
"g.inject(\"marko\").choose(P.eq(__.V(9999).values(\"name\")), 
__.constant(\"matched\"), __.constant(\"unmatched\"))",
-                "java": 
"g.inject(\"marko\").choose(P.eq(__.V(9999).values(\"name\")), 
__.constant(\"matched\"), __.constant(\"unmatched\"))",
-                "javascript": 
"g.inject(\"marko\").choose(P.eq(__.V(9999).values(\"name\")), 
__.constant(\"matched\"), __.constant(\"unmatched\"))",
-                "python": 
"g.inject('marko').choose(P.eq(__.V(9999).values('name')), 
__.constant('matched'), __.constant('unmatched'))"
+                "original": 
"g.inject(\"marko\").choose(__.is(P.eq(__.V(9999).values(\"name\"))), 
__.constant(\"matched\"), __.constant(\"unmatched\"))",
+                "language": 
"g.inject(\"marko\").choose(__.is(P.eq(__.V(9999).values(\"name\"))), 
__.constant(\"matched\"), __.constant(\"unmatched\"))",
+                "canonical": 
"g.inject(\"marko\").choose(__.is(P.eq(__.V(9999).values(\"name\"))), 
__.constant(\"matched\"), __.constant(\"unmatched\"))",
+                "anonymized": 
"g.inject(string0).choose(__.is(P.eq(__.V(number0).values(string1))), 
__.constant(string2), __.constant(string3))",
+                "dotnet": 
"g.Inject<object>(\"marko\").Choose<object>(__.Is(P.Eq(__.V(9999).Values<object>(\"name\"))),
 __.Constant<object>(\"matched\"), __.Constant<object>(\"unmatched\"))",
+                "go": 
"g.Inject(\"marko\").Choose(gremlingo.T__.Is(gremlingo.P.Eq(gremlingo.T__.V(9999).Values(\"name\"))),
 gremlingo.T__.Constant(\"matched\"), gremlingo.T__.Constant(\"unmatched\"))",
+                "groovy": 
"g.inject(\"marko\").choose(__.is(P.eq(__.V(9999).values(\"name\"))), 
__.constant(\"matched\"), __.constant(\"unmatched\"))",
+                "java": 
"g.inject(\"marko\").choose(__.is(P.eq(__.V(9999).values(\"name\"))), 
__.constant(\"matched\"), __.constant(\"unmatched\"))",
+                "javascript": 
"g.inject(\"marko\").choose(__.is(P.eq(__.V(9999).values(\"name\"))), 
__.constant(\"matched\"), __.constant(\"unmatched\"))",
+                "python": 
"g.inject('marko').choose(__.is_(P.eq(__.V(9999).values('name'))), 
__.constant('matched'), __.constant('unmatched'))"
             }
         ]
     },
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 4a70f2ba24..6872769c9b 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
@@ -118,7 +118,7 @@ Feature: Step - is() with traversal-bearing predicates
     And using the parameter vid1 defined as "v[marko].id"
     And the traversal of
       """
-      
g.V().hasLabel("person").values("age").choose(P.gt(__.V(vid1).values("age")), 
__.constant("older than marko"), __.constant("not older"))
+      
g.V().hasLabel("person").values("age").choose(__.is(P.gt(__.V(vid1).values("age"))),
 __.constant("older than marko"), __.constant("not older"))
       """
     When iterated to list
     Then the result should be unordered
@@ -133,7 +133,7 @@ Feature: Step - is() with traversal-bearing predicates
     Given the modern graph
     And the traversal of
       """
-      
g.V().hasLabel("person").values("age").choose(P.gte(__.V().hasLabel("person").values("age").mean()),
 __.constant("above average"), __.constant("below average"))
+      
g.V().hasLabel("person").values("age").choose(__.is(P.gte(__.V().hasLabel("person").values("age").mean())),
 __.constant("above average"), __.constant("below average"))
       """
     When iterated to list
     Then the result should be unordered
@@ -229,7 +229,7 @@ Feature: Step - is() with traversal-bearing predicates
     Given the modern graph
     And the traversal of
       """
-      g.inject("marko").choose(P.eq(__.V(9999).values("name")), 
__.constant("matched"), __.constant("unmatched"))
+      g.inject("marko").choose(__.is(P.eq(__.V(9999).values("name"))), 
__.constant("matched"), __.constant("unmatched"))
       """
     When iterated to list
     Then the result should be unordered


Reply via email to