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

[tinkerpop] 01/01: TINKERPOP-2525 Extended gherkin tests to cover SubgraphStrategy

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

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

commit dbd5141eca73ef4022e8e6f931c207494c96cae5
Author: Stephen Mallette <st...@amazon.com>
AuthorDate: Tue Mar 29 16:17:03 2022 -0400

    TINKERPOP-2525 Extended gherkin tests to cover SubgraphStrategy
---
 .../src/Gremlin.Net/CompatibilitySuppressions.xml  |   8 +
 .../Strategy/Decoration/SubgraphStrategy.cs        |   7 +-
 .../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs |  59 ++
 gremlin-javascript/build/generate.groovy           |   2 +-
 .../gremlin-javascript/test/cucumber/gremlin.js    |  61 +-
 gremlin-python/src/main/python/radish/gremlin.py   |  59 ++
 .../features/integrated/SubgraphStrategy.feature   | 916 +++++++++++++++++++++
 .../process/ProcessLimitedComputerSuite.java       |   3 -
 .../process/ProcessLimitedStandardSuite.java       |   1 -
 9 files changed, 1109 insertions(+), 7 deletions(-)

diff --git a/gremlin-dotnet/src/Gremlin.Net/CompatibilitySuppressions.xml b/gremlin-dotnet/src/Gremlin.Net/CompatibilitySuppressions.xml
index d1abba6..5a951a6 100644
--- a/gremlin-dotnet/src/Gremlin.Net/CompatibilitySuppressions.xml
+++ b/gremlin-dotnet/src/Gremlin.Net/CompatibilitySuppressions.xml
@@ -8,4 +8,12 @@
     <Right>lib/netstandard2.0/Gremlin.Net.dll</Right>
     <IsBaselineSuppression>true</IsBaselineSuppression>
   </Suppression>
+  <Suppression>
+    <!-- Added an optional parameter to the constructor. -->
+    <DiagnosticId>CP0002</DiagnosticId>
+    <Target>M:Gremlin.Net.Process.Traversal.Strategy.Decoration.SubgraphStrategy.#ctor(Gremlin.Net.Process.Traversal.ITraversal,Gremlin.Net.Process.Traversal.ITraversal,Gremlin.Net.Process.Traversal.ITraversal)</Target>
+    <Left>lib/netstandard2.0/Gremlin.Net.dll</Left>
+    <Right>lib/netstandard2.0/Gremlin.Net.dll</Right>
+    <IsBaselineSuppression>true</IsBaselineSuppression>
+  </Suppression>
 </Suppressions>
\ No newline at end of file
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/SubgraphStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/SubgraphStrategy.cs
index 6e7f333..ef6d8dd 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/SubgraphStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/SubgraphStrategy.cs
@@ -43,8 +43,9 @@ namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
         /// <param name="vertices">Constrains vertices for the <see cref="ITraversal" />.</param>
         /// <param name="edges">Constrains edges for the <see cref="ITraversal" />.</param>
         /// <param name="vertexProperties">Constrains vertex properties for the <see cref="ITraversal" />.</param>
+        /// <param name="checkAdjacentVertices">Determines if filters are applied to the adjacent vertices of an edge.</param>
         public SubgraphStrategy(ITraversal vertices = null, ITraversal edges = null,
-            ITraversal vertexProperties = null)
+            ITraversal vertexProperties = null, bool checkAdjacentVertices = true)
             : this()
         {
             if (vertices != null)
@@ -53,6 +54,10 @@ namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
                 Configuration["edges"] = edges;
             if (vertexProperties != null)
                 Configuration["vertexProperties"] = vertexProperties;
+
+            // hate to write this by default so only going to write it if it's false which is the non-default value
+            if (!checkAdjacentVertices)
+                Configuration["checkAdjacentVertices"] = checkAdjacentVertices;
         }
     }
 }
\ No newline at end of file
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
index acbe204..f859914 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
@@ -352,6 +352,65 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
                {"g_withStrategiesXReadOnlyStrategyX_V_propertyXname_joshX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ReadOnlyStrategy()).V().Property("name","josh")}}, 
                {"g_withStrategiesXReadOnlyStrategyX_E_propertyXweight_0X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ReadOnlyStrategy()).E().Property("weight",0)}}, 
                {"g_V_classic_recommendation", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name","DARK STAR").As("a").Out("followedBy").Aggregate("stash").In("followedBy").Where(P.Neq("a").And(P.Without(new List<object> {"stash"}))).GroupCount<object>().Unfold<object>().Project<object>("x","y","z").By(__.Select<object>(Column.Keys).Values<object>("name")).By(__.Select<object>(Column.Keys).Values<object>("performances")).By(__.Select<ob [...]
+               {"g_withStrategiesXSubgraphStrategyXsubgraphAXX_V", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.And(__.InV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"}))),__.OutV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})))))).V()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphAXX_E", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.And(__.InV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"}))),__.OutV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})))))).E()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_outE", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.And(__.InV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"}))),__.OutV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"}))) [...]
+               {"g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_inE", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.And(__.InV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"}))),__.OutV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})))) [...]
+               {"g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_out", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.And(__.InV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"}))),__.OutV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})))) [...]
+               {"g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_in", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.And(__.InV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"}))),__.OutV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"}))))) [...]
+               {"g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_both", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.And(__.InV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"}))),__.OutV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"}))) [...]
+               {"g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_bothE", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.And(__.InV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"}))),__.OutV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})) [...]
+               {"g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_localXbothE_limitX1XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.And(__.InV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"}))),__.OutV().Filter(__.Has("name",P.Within(new List<object> {"josh", "l [...]
+               {"g_withStrategiesXSubgraphStrategyXsubgraphAXX_EX11X_bothV", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.And(__.InV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"}))),__.OutV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"}) [...]
+               {"g_withStrategiesXSubgraphStrategyXsubgraphAXX_EX12X_bothV", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.And(__.InV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"}))),__.OutV().Filter(__.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"}) [...]
+               {"g_withStrategiesXSubgraphStrategyXsubgraphBXX_V", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, edges: __.Or(__.Has("weight",1.0).HasLabel("knows"),__.Has("weight",0.4).HasLabel("created").OutV().Has("name","marko"),__.Has("weight",1.0).HasLabel("created")))).V()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphBXX_E", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, edges: __.Or(__.Has("weight",1.0).HasLabel("knows"),__.Has("weight",0.4).HasLabel("created").OutV().Has("name","marko"),__.Has("weight",1.0).HasLabel("created")))).E()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX1X_outE", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, edges: __.Or(__.Has("weight",1.0).HasLabel("knows"),__.Has("weight",0.4).HasLabel("created").OutV().Has("name","marko"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid1"]).OutE()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX1X_out", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, edges: __.Or(__.Has("weight",1.0).HasLabel("knows"),__.Has("weight",0.4).HasLabel("created").OutV().Has("name","marko"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid1"]).Out()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX1X_outXcreatedX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, edges: __.Or(__.Has("weight",1.0).HasLabel("knows"),__.Has("weight",0.4).HasLabel("created").OutV().Has("name","marko"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid1"]).Out("knows")}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_outXcreatedX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, edges: __.Or(__.Has("weight",1.0).HasLabel("knows"),__.Has("weight",0.4).HasLabel("created").OutV().Has("name","marko"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).Out("created")}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_outE", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, edges: __.Or(__.Has("weight",1.0).HasLabel("knows"),__.Has("weight",0.4).HasLabel("created").OutV().Has("name","marko"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).OutE()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_out", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, edges: __.Or(__.Has("weight",1.0).HasLabel("knows"),__.Has("weight",0.4).HasLabel("created").OutV().Has("name","marko"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).Out()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_bothE", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, edges: __.Or(__.Has("weight",1.0).HasLabel("knows"),__.Has("weight",0.4).HasLabel("created").OutV().Has("name","marko"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).BothE()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_both", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, edges: __.Or(__.Has("weight",1.0).HasLabel("knows"),__.Has("weight",0.4).HasLabel("created").OutV().Has("name","marko"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).Both()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_outV_outE", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, edges: __.Or(__.Has("weight",1.0).HasLabel("knows"),__.Has("weight",0.4).HasLabel("created").OutV().Has("name","marko"),__.Has("weight",1.0).HasLabel("created")))).E(p["eid8"]).OutV().OutE()}}, 
+               {"g_withStrategiesXSubgraphStrategyXvertices_inXknowsX_hasXname_markoXXX_V_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.In("knows").Has("name","marko"), edges: __.And(__.InV().Filter(__.In("knows").Has("name","marko")),__.OutV().Filter(__.In("knows").Has("name","marko"))))).V().Values<object>("name")}}, 
+               {"g_withStrategiesXSubgraphStrategyXvertices_in_hasXname_markoXXX_V_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.In().Has("name","marko"), edges: __.And(__.InV().Filter(__.In().Has("name","marko")),__.OutV().Filter(__.In().Has("name","marko"))))).V().Values<object>("name")}}, 
+               {"g_withStrategiesXSubgraphStrategyXvertices_inXknowsX_whereXoutXcreatedX_hasXname_lopXXXX_V_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.In("knows").Where(__.Out("created").Has("name","lop")), edges: __.And(__.InV().Filter(__.In("knows").Where(__.Out("created").Has("name","lop"))),__.OutV().Filter(__.In("knows").Where(__.Out("created").Has("name [...]
+               {"g_withStrategiesXSubgraphStrategyXvertices_in_hasXname_markoX_outXcreatedX_hasXname_lopXXXX_V_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.In().Where(__.Has("name","marko").Out("created").Has("name","lop")), edges: __.And(__.InV().Filter(__.In().Where(__.Has("name","marko").Out("created").Has("name","lop"))),__.OutV().Filter(__.In().Where(__.Ha [...]
+               {"g_withStrategiesXSubgraphStrategyXvertices_orXboth_hasXname_markoX_hasXname_markoXXXX_V_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Or(__.Both().Has("name","marko"),__.Has("name","marko")), edges: __.And(__.InV().Filter(__.Or(__.Both().Has("name","marko"),__.Has("name","marko"))),__.OutV().Filter(__.Or(__.Both().Has("name","marko"),__.Has("nam [...]
+               {"g_withStrategiesXSubgraphStrategyXsubgraphCXX_V", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).V()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphCXX_E", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).E()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_outE", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).OutE()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_inE", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).InE()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_out", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).Out()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_in", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).In()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_both", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).Both()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_bothE", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).BothE()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_localXbothE_limitX1XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).Local<object>(__.BothE().Limit<object>(1))}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphCXX_EX11X_bothV", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).E(p["eid11"]).BothV()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphCXX_EX12X_bothV", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).E(p["eid12"]).BothV()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphCXX_EX9X_bothV", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).E(p["eid9"]).BothV()}}, 
+               {"g_withStrategiesXSubgraphStrategyXvertices_hasXname_withinXripple_josh_markoXXX_V_asXaX_out_in_asXbX_dedupXa_bX_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Within(new List<object> {"ripple", "josh", "marko"})), edges: __.And(__.InV().Filter(__.Has("name",P.Within(new List<object> {"ripple", "josh", "marko"}))),__.OutV().Filter(__. [...]
+               {"g_withStrategiesXSubgraphStrategyXvertexProperties_hasXstartTime_gtX2005XXXX_V_propertiesXlocationX_value", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertexProperties: __.Has("startTime",P.Gt(2005)))).V().Properties<object>("location").Value<object>()}}, 
+               {"g_withStrategiesXSubgraphStrategyXvertexProperties_hasXstartTime_gtX2005XXXX_V_valuesXlocationX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertexProperties: __.Has("startTime",P.Gt(2005)))).V().Values<object>("location")}}, 
+               {"g_withStrategiesXSubgraphStrategyXvertexProperties_hasXstartTime_gtX2005XXXX_V_asXaX_propertiesXlocationX_asXbX_selectXaX_outE_properties_selectXbX_value_dedup", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertexProperties: __.Has("startTime",P.Gt(2005)))).V().As("a").Properties<object>("location").As("b").Select<object>("a").OutE().Properties<object>().Select<ob [...]
+               {"g_withStrategiesXSubgraphStrategyXvertexProperties_hasXstartTime_gtX2005XXXX_V_asXaX_valuesXlocationX_asXbX_selectXaX_outE_properties_selectXbX_dedup", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertexProperties: __.Has("startTime",P.Gt(2005)))).V().As("a").Values<object>("location").As("b").Select<object>("a").OutE().Properties<object>().Select<object>("b").Ded [...]
+               {"g_withStrategiesXSubgraphStrategyXvertices_hasXname_neqXstephenXX_vertexProperties_hasXstartTime_gtX2005XXXX_V_propertiesXlocationX_value", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Neq("stephen")), edges: __.And(__.InV().Filter(__.Has("name",P.Neq("stephen"))),__.OutV().Filter(__.Has("name",P.Neq("stephen")))), vertexProperties: __.Ha [...]
+               {"g_withStrategiesXSubgraphStrategyXvertices_hasXname_neqXstephenXX_vertexProperties_hasXstartTime_gtX2005XXXX_V_valuesXlocationX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, vertices: __.Has("name",P.Neq("stephen")), edges: __.And(__.InV().Filter(__.Has("name",P.Neq("stephen"))),__.OutV().Filter(__.Has("name",P.Neq("stephen")))), vertexProperties: __.Has("startTi [...]
+               {"g_withStrategiesXSubgraphStrategyXedges_hasLabelXusesX_hasXskill_5XXX_V_outE_valueMap_selectXvaluesX_unfold", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: true, edges: __.HasLabel("uses").Has("skill",5))).V().OutE().ValueMap<object,object>().Select<object>(Column.Values).Unfold<object>()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphDXX_V", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: false, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).V()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphDXX_E", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: false, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).E()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_outE", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: false, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).OutE()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_inE", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: false, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).InE()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_out", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: false, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).Out()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_in", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: false, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).In()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_both", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: false, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).Both()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_bothE", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: false, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).BothE()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_localXbothE_limitX1XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: false, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).V(p["vid4"]).Local<object>(__.BothE().Limit<object>(1))}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphDXX_EX11X_bothV", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: false, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).E(p["eid11"]).BothV()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphDXX_EX12X_bothV", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: false, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).E(p["eid12"]).BothV()}}, 
+               {"g_withStrategiesXSubgraphStrategyXsubgraphDXX_EX9X_bothV", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SubgraphStrategy(checkAdjacentVertices: false, vertices: __.Has("name",P.Within(new List<object> {"josh", "lop", "ripple"})), edges: __.Or(__.Has("weight",0.4).HasLabel("created"),__.Has("weight",1.0).HasLabel("created")))).E(p["eid9"]).BothV()}}, 
                {"g_VX1X_asXaX_outXcreatedX_addEXcreatedByX_toXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29).As("marko").AddV("person").Property("name","vadas").Property("age",27).As("vadas").AddV("software").Property("name","lop").Property("lang","java").As("lop").AddV("person").Property("name","josh").Property("age",32).As("josh").AddV("software").Property("name","ripple").Property [...]
                {"g_VX1X_asXaX_outXcreatedX_addEXcreatedByX_toXaX_propertyXweight_2X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29).As("marko").AddV("person").Property("name","vadas").Property("age",27).As("vadas").AddV("software").Property("name","lop").Property("lang","java").As("lop").AddV("person").Property("name","josh").Property("age",32).As("josh").AddV("software").Property("name" [...]
                {"g_V_outE_propertyXweight_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29).As("marko").AddV("person").Property("name","vadas").Property("age",27).As("vadas").AddV("software").Property("name","lop").Property("lang","java").As("lop").AddV("person").Property("name","josh").Property("age",32).As("josh").AddV("software").Property("name","ripple").Property("lang","java").A [...]
diff --git a/gremlin-javascript/build/generate.groovy b/gremlin-javascript/build/generate.groovy
index 6eaaf94..774a8d3 100644
--- a/gremlin-javascript/build/generate.groovy
+++ b/gremlin-javascript/build/generate.groovy
@@ -91,7 +91,7 @@ radishGremlinFile.withWriter('UTF-8') { Writer writer ->
     writer.writeLine(
                     'const graphTraversalModule = require(\'../../lib/process/graph-traversal\');\n' +
                     'const traversalModule = require(\'../../lib/process/traversal\');\n' +
-                    'const { TraversalStrategies, VertexProgramStrategy, OptionsStrategy, ReadOnlyStrategy, SeedStrategy, ProductiveByStrategy } = require(\'../../lib/process/traversal-strategy\');\n' +
+                    'const { TraversalStrategies, VertexProgramStrategy, OptionsStrategy, ReadOnlyStrategy, SeedStrategy, SubgraphStrategy, ProductiveByStrategy } = require(\'../../lib/process/traversal-strategy\');\n' +
                     'const __ = graphTraversalModule.statics;\n' +
                     'const Barrier = traversalModule.barrier\n' +
                     'const Cardinality = traversalModule.cardinality\n' +
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
index b66244e..d9a65cf 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
@@ -26,7 +26,7 @@
 
 const graphTraversalModule = require('../../lib/process/graph-traversal');
 const traversalModule = require('../../lib/process/traversal');
-const { TraversalStrategies, VertexProgramStrategy, OptionsStrategy, ReadOnlyStrategy, SeedStrategy, ProductiveByStrategy } = require('../../lib/process/traversal-strategy');
+const { TraversalStrategies, VertexProgramStrategy, OptionsStrategy, ReadOnlyStrategy, SeedStrategy, SubgraphStrategy, ProductiveByStrategy } = require('../../lib/process/traversal-strategy');
 const __ = graphTraversalModule.statics;
 const Barrier = traversalModule.barrier
 const Cardinality = traversalModule.cardinality
@@ -342,6 +342,65 @@ const gremlins = {
     g_withStrategiesXReadOnlyStrategyX_V_propertyXname_joshX: [function({g}) { return g.withStrategies(new ReadOnlyStrategy()).V().property("name","josh") }], 
     g_withStrategiesXReadOnlyStrategyX_E_propertyXweight_0X: [function({g}) { return g.withStrategies(new ReadOnlyStrategy()).E().property("weight",0) }], 
     g_V_classic_recommendation: [function({g}) { return g.V().has("name","DARK STAR").as("a").out("followedBy").aggregate("stash").in_("followedBy").where(P.neq("a").and(P.without(["stash"]))).groupCount().unfold().project("x","y","z").by(__.select(Column.keys).values("name")).by(__.select(Column.keys).values("performances")).by(__.select(Column.values)).order().by(__.select("z"),Order.desc).by(__.select("y"),Order.asc).limit(5).aggregate(Scope.local,"m").select("x") }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphAXX_V: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.and(__.inV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))),__.outV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))))})).V() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphAXX_E: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.and(__.inV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))),__.outV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))))})).E() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_outE: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.and(__.inV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))),__.outV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))))})).V(vid4).outE() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_inE: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.and(__.inV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))),__.outV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))))})).V(vid4).inE() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_out: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.and(__.inV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))),__.outV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))))})).V(vid4).out() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_in: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.and(__.inV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))),__.outV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))))})).V(vid4).in_() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_both: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.and(__.inV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))),__.outV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))))})).V(vid4).both() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_bothE: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.and(__.inV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))),__.outV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))))})).V(vid4).bothE() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_localXbothE_limitX1XX: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.and(__.inV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))),__.outV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))))})).V(vid4).local(__.bothE().limit(1)) }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphAXX_EX11X_bothV: [function({g, eid11}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.and(__.inV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))),__.outV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))))})).E(eid11).bothV() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphAXX_EX12X_bothV: [function({g, eid12}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.and(__.inV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))),__.outV().filter(__.has("name",P.within(["josh", "lop", "ripple"]))))})).E(eid12).bothV() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphBXX_V: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,edges:__.or(__.has("weight",1.0).hasLabel("knows"),__.has("weight",0.4).hasLabel("created").outV().has("name","marko"),__.has("weight",1.0).hasLabel("created"))})).V() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphBXX_E: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,edges:__.or(__.has("weight",1.0).hasLabel("knows"),__.has("weight",0.4).hasLabel("created").outV().has("name","marko"),__.has("weight",1.0).hasLabel("created"))})).E() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX1X_outE: [function({g, vid1}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,edges:__.or(__.has("weight",1.0).hasLabel("knows"),__.has("weight",0.4).hasLabel("created").outV().has("name","marko"),__.has("weight",1.0).hasLabel("created"))})).V(vid1).outE() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX1X_out: [function({g, vid1}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,edges:__.or(__.has("weight",1.0).hasLabel("knows"),__.has("weight",0.4).hasLabel("created").outV().has("name","marko"),__.has("weight",1.0).hasLabel("created"))})).V(vid1).out() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX1X_outXcreatedX: [function({g, vid1}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,edges:__.or(__.has("weight",1.0).hasLabel("knows"),__.has("weight",0.4).hasLabel("created").outV().has("name","marko"),__.has("weight",1.0).hasLabel("created"))})).V(vid1).out("knows") }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_outXcreatedX: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,edges:__.or(__.has("weight",1.0).hasLabel("knows"),__.has("weight",0.4).hasLabel("created").outV().has("name","marko"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).out("created") }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_outE: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,edges:__.or(__.has("weight",1.0).hasLabel("knows"),__.has("weight",0.4).hasLabel("created").outV().has("name","marko"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).outE() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_out: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,edges:__.or(__.has("weight",1.0).hasLabel("knows"),__.has("weight",0.4).hasLabel("created").outV().has("name","marko"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).out() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_bothE: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,edges:__.or(__.has("weight",1.0).hasLabel("knows"),__.has("weight",0.4).hasLabel("created").outV().has("name","marko"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).bothE() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_both: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,edges:__.or(__.has("weight",1.0).hasLabel("knows"),__.has("weight",0.4).hasLabel("created").outV().has("name","marko"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).both() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_outV_outE: [function({g, eid8}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,edges:__.or(__.has("weight",1.0).hasLabel("knows"),__.has("weight",0.4).hasLabel("created").outV().has("name","marko"),__.has("weight",1.0).hasLabel("created"))})).E(eid8).outV().outE() }], 
+    g_withStrategiesXSubgraphStrategyXvertices_inXknowsX_hasXname_markoXXX_V_name: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.in_("knows").has("name","marko"),edges:__.and(__.inV().filter(__.in_("knows").has("name","marko")),__.outV().filter(__.in_("knows").has("name","marko")))})).V().values("name") }], 
+    g_withStrategiesXSubgraphStrategyXvertices_in_hasXname_markoXXX_V_name: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.in_().has("name","marko"),edges:__.and(__.inV().filter(__.in_().has("name","marko")),__.outV().filter(__.in_().has("name","marko")))})).V().values("name") }], 
+    g_withStrategiesXSubgraphStrategyXvertices_inXknowsX_whereXoutXcreatedX_hasXname_lopXXXX_V_name: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.in_("knows").where(__.out("created").has("name","lop")),edges:__.and(__.inV().filter(__.in_("knows").where(__.out("created").has("name","lop"))),__.outV().filter(__.in_("knows").where(__.out("created").has("name","lop"))))})).V().values("name") }], 
+    g_withStrategiesXSubgraphStrategyXvertices_in_hasXname_markoX_outXcreatedX_hasXname_lopXXXX_V_name: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.in_().where(__.has("name","marko").out("created").has("name","lop")),edges:__.and(__.inV().filter(__.in_().where(__.has("name","marko").out("created").has("name","lop"))),__.outV().filter(__.in_().where(__.has("name","marko").out("created").has("name","lop"))))})).V().values("name") }], 
+    g_withStrategiesXSubgraphStrategyXvertices_orXboth_hasXname_markoX_hasXname_markoXXXX_V_name: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.or(__.both().has("name","marko"),__.has("name","marko")),edges:__.and(__.inV().filter(__.or(__.both().has("name","marko"),__.has("name","marko"))),__.outV().filter(__.or(__.both().has("name","marko"),__.has("name","marko"))))})).V().where(__.bothE().count().is(P.neq(0))).values("name") }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphCXX_V: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).V() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphCXX_E: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).E() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_outE: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).outE() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_inE: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).inE() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_out: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).out() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_in: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).in_() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_both: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).both() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_bothE: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).bothE() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_localXbothE_limitX1XX: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).local(__.bothE().limit(1)) }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphCXX_EX11X_bothV: [function({g, eid11}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).E(eid11).bothV() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphCXX_EX12X_bothV: [function({g, eid12}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).E(eid12).bothV() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphCXX_EX9X_bothV: [function({g, eid9}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).E(eid9).bothV() }], 
+    g_withStrategiesXSubgraphStrategyXvertices_hasXname_withinXripple_josh_markoXXX_V_asXaX_out_in_asXbX_dedupXa_bX_name: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.within(["ripple", "josh", "marko"])),edges:__.and(__.inV().filter(__.has("name",P.within(["ripple", "josh", "marko"]))),__.outV().filter(__.has("name",P.within(["ripple", "josh", "marko"]))))})).V().as("a").out().in_().as("b").dedup("a","b").values("name") }], 
+    g_withStrategiesXSubgraphStrategyXvertexProperties_hasXstartTime_gtX2005XXXX_V_propertiesXlocationX_value: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertexProperties:__.has("startTime",P.gt(2005))})).V().properties("location").value() }], 
+    g_withStrategiesXSubgraphStrategyXvertexProperties_hasXstartTime_gtX2005XXXX_V_valuesXlocationX: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertexProperties:__.has("startTime",P.gt(2005))})).V().values("location") }], 
+    g_withStrategiesXSubgraphStrategyXvertexProperties_hasXstartTime_gtX2005XXXX_V_asXaX_propertiesXlocationX_asXbX_selectXaX_outE_properties_selectXbX_value_dedup: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertexProperties:__.has("startTime",P.gt(2005))})).V().as("a").properties("location").as("b").select("a").outE().properties().select("b").value().dedup() }], 
+    g_withStrategiesXSubgraphStrategyXvertexProperties_hasXstartTime_gtX2005XXXX_V_asXaX_valuesXlocationX_asXbX_selectXaX_outE_properties_selectXbX_dedup: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertexProperties:__.has("startTime",P.gt(2005))})).V().as("a").values("location").as("b").select("a").outE().properties().select("b").dedup() }], 
+    g_withStrategiesXSubgraphStrategyXvertices_hasXname_neqXstephenXX_vertexProperties_hasXstartTime_gtX2005XXXX_V_propertiesXlocationX_value: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.neq("stephen")),edges:__.and(__.inV().filter(__.has("name",P.neq("stephen"))),__.outV().filter(__.has("name",P.neq("stephen")))),vertexProperties:__.has("startTime",P.gt(2005))})).V().properties("location").value() }], 
+    g_withStrategiesXSubgraphStrategyXvertices_hasXname_neqXstephenXX_vertexProperties_hasXstartTime_gtX2005XXXX_V_valuesXlocationX: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,vertices:__.has("name",P.neq("stephen")),edges:__.and(__.inV().filter(__.has("name",P.neq("stephen"))),__.outV().filter(__.has("name",P.neq("stephen")))),vertexProperties:__.has("startTime",P.gt(2005))})).V().values("location") }], 
+    g_withStrategiesXSubgraphStrategyXedges_hasLabelXusesX_hasXskill_5XXX_V_outE_valueMap_selectXvaluesX_unfold: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:true,edges:__.hasLabel("uses").has("skill",5)})).V().outE().valueMap().select(Column.values).unfold() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphDXX_V: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:false,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).V() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphDXX_E: [function({g}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:false,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).E() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_outE: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:false,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).outE() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_inE: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:false,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).inE() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_out: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:false,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).out() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_in: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:false,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).in_() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_both: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:false,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).both() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_bothE: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:false,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).bothE() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_localXbothE_limitX1XX: [function({g, vid4}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:false,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).V(vid4).local(__.bothE().limit(1)) }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphDXX_EX11X_bothV: [function({g, eid11}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:false,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).E(eid11).bothV() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphDXX_EX12X_bothV: [function({g, eid12}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:false,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).E(eid12).bothV() }], 
+    g_withStrategiesXSubgraphStrategyXsubgraphDXX_EX9X_bothV: [function({g, eid9}) { return g.withStrategies(new SubgraphStrategy({checkAdjacentVertices:false,vertices:__.has("name",P.within(["josh", "lop", "ripple"])),edges:__.or(__.has("weight",0.4).hasLabel("created"),__.has("weight",1.0).hasLabel("created"))})).E(eid9).bothV() }], 
     g_VX1X_asXaX_outXcreatedX_addEXcreatedByX_toXaX: [function({g, vid1}) { return g.addV("person").property("name","marko").property("age",29).as("marko").addV("person").property("name","vadas").property("age",27).as("vadas").addV("software").property("name","lop").property("lang","java").as("lop").addV("person").property("name","josh").property("age",32).as("josh").addV("software").property("name","ripple").property("lang","java").as("ripple").addV("person").property("name","peter").pr [...]
     g_VX1X_asXaX_outXcreatedX_addEXcreatedByX_toXaX_propertyXweight_2X: [function({g, vid1}) { return g.addV("person").property("name","marko").property("age",29).as("marko").addV("person").property("name","vadas").property("age",27).as("vadas").addV("software").property("name","lop").property("lang","java").as("lop").addV("person").property("name","josh").property("age",32).as("josh").addV("software").property("name","ripple").property("lang","java").as("ripple").addV("person").property [...]
     g_V_outE_propertyXweight_nullX: [function({g}) { return g.addV("person").property("name","marko").property("age",29).as("marko").addV("person").property("name","vadas").property("age",27).as("vadas").addV("software").property("name","lop").property("lang","java").as("lop").addV("person").property("name","josh").property("age",32).as("josh").addV("software").property("name","ripple").property("lang","java").as("ripple").addV("person").property("name","peter").property("age",35).as("pe [...]
diff --git a/gremlin-python/src/main/python/radish/gremlin.py b/gremlin-python/src/main/python/radish/gremlin.py
index 7c779aa..6c916a4 100644
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@ -324,6 +324,65 @@ world.gremlins = {
     'g_withStrategiesXReadOnlyStrategyX_V_propertyXname_joshX': [(lambda g:g.withStrategies(*[TraversalStrategy('ReadOnlyStrategy', None, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy')]).V().property('name','josh'))], 
     'g_withStrategiesXReadOnlyStrategyX_E_propertyXweight_0X': [(lambda g:g.withStrategies(*[TraversalStrategy('ReadOnlyStrategy', None, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy')]).E().property('weight',0))], 
     'g_V_classic_recommendation': [(lambda g:g.V().has('name','DARK STAR').as_('a').out('followedBy').aggregate('stash').in_('followedBy').where(P.neq('a').and_(P.without(['stash']))).groupCount().unfold().project('x','y','z').by(__.select(Column.keys).name).by(__.select(Column.keys).performances).by(__.select(Column.values)).order().by(__.select('z'),Order.desc).by(__.select('y'),Order.asc)[0:5].aggregate(Scope.local,'m').select('x'))], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphAXX_V': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.and_(__.inV().filter_(__.has('name',P.within(['josh','lop','ripple']))),__.outV().filter_(__.has('name',P.within(['josh','lop','ripple']))))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphAXX_E': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.and_(__.inV().filter_(__.has('name',P.within(['josh','lop','ripple']))),__.outV().filter_(__.has('name',P.within(['josh','lop','ripple']))))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).E())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_outE': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.and_(__.inV().filter_(__.has('name',P.within(['josh','lop','ripple']))),__.outV().filter_(__.has('name',P.within(['josh','lop','ripple']))))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).outE())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_inE': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.and_(__.inV().filter_(__.has('name',P.within(['josh','lop','ripple']))),__.outV().filter_(__.has('name',P.within(['josh','lop','ripple']))))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).inE())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_out': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.and_(__.inV().filter_(__.has('name',P.within(['josh','lop','ripple']))),__.outV().filter_(__.has('name',P.within(['josh','lop','ripple']))))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).out())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_in': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.and_(__.inV().filter_(__.has('name',P.within(['josh','lop','ripple']))),__.outV().filter_(__.has('name',P.within(['josh','lop','ripple']))))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).in_())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_both': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.and_(__.inV().filter_(__.has('name',P.within(['josh','lop','ripple']))),__.outV().filter_(__.has('name',P.within(['josh','lop','ripple']))))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).both())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_bothE': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.and_(__.inV().filter_(__.has('name',P.within(['josh','lop','ripple']))),__.outV().filter_(__.has('name',P.within(['josh','lop','ripple']))))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).bothE())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_localXbothE_limitX1XX': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.and_(__.inV().filter_(__.has('name',P.within(['josh','lop','ripple']))),__.outV().filter_(__.has('name',P.within(['josh','lop','ripple']))))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V [...]
+    'g_withStrategiesXSubgraphStrategyXsubgraphAXX_EX11X_bothV': [(lambda g, eid11=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.and_(__.inV().filter_(__.has('name',P.within(['josh','lop','ripple']))),__.outV().filter_(__.has('name',P.within(['josh','lop','ripple']))))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).E(eid11).bothV())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphAXX_EX12X_bothV': [(lambda g, eid12=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.and_(__.inV().filter_(__.has('name',P.within(['josh','lop','ripple']))),__.outV().filter_(__.has('name',P.within(['josh','lop','ripple']))))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).E(eid12).bothV())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphBXX_V': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'edges':__.or_(__.has('weight',float(1.0)).hasLabel('knows'),__.has('weight',float(0.4)).hasLabel('created').outV().has('name','marko'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphBXX_E': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'edges':__.or_(__.has('weight',float(1.0)).hasLabel('knows'),__.has('weight',float(0.4)).hasLabel('created').outV().has('name','marko'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).E())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX1X_outE': [(lambda g, vid1=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'edges':__.or_(__.has('weight',float(1.0)).hasLabel('knows'),__.has('weight',float(0.4)).hasLabel('created').outV().has('name','marko'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid1).outE())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX1X_out': [(lambda g, vid1=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'edges':__.or_(__.has('weight',float(1.0)).hasLabel('knows'),__.has('weight',float(0.4)).hasLabel('created').outV().has('name','marko'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid1).out())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX1X_outXcreatedX': [(lambda g, vid1=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'edges':__.or_(__.has('weight',float(1.0)).hasLabel('knows'),__.has('weight',float(0.4)).hasLabel('created').outV().has('name','marko'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid1).out('knows'))], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_outXcreatedX': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'edges':__.or_(__.has('weight',float(1.0)).hasLabel('knows'),__.has('weight',float(0.4)).hasLabel('created').outV().has('name','marko'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).out('created'))], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_outE': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'edges':__.or_(__.has('weight',float(1.0)).hasLabel('knows'),__.has('weight',float(0.4)).hasLabel('created').outV().has('name','marko'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).outE())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_out': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'edges':__.or_(__.has('weight',float(1.0)).hasLabel('knows'),__.has('weight',float(0.4)).hasLabel('created').outV().has('name','marko'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).out())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_bothE': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'edges':__.or_(__.has('weight',float(1.0)).hasLabel('knows'),__.has('weight',float(0.4)).hasLabel('created').outV().has('name','marko'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).bothE())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_both': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'edges':__.or_(__.has('weight',float(1.0)).hasLabel('knows'),__.has('weight',float(0.4)).hasLabel('created').outV().has('name','marko'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).both())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_outV_outE': [(lambda g, eid8=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'edges':__.or_(__.has('weight',float(1.0)).hasLabel('knows'),__.has('weight',float(0.4)).hasLabel('created').outV().has('name','marko'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).E(eid8).outV().outE())], 
+    'g_withStrategiesXSubgraphStrategyXvertices_inXknowsX_hasXname_markoXXX_V_name': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.in_('knows').has('name','marko'),'edges':__.and_(__.inV().filter_(__.in_('knows').has('name','marko')),__.outV().filter_(__.in_('knows').has('name','marko')))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V().name)], 
+    'g_withStrategiesXSubgraphStrategyXvertices_in_hasXname_markoXXX_V_name': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.in_().has('name','marko'),'edges':__.and_(__.inV().filter_(__.in_().has('name','marko')),__.outV().filter_(__.in_().has('name','marko')))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V().name)], 
+    'g_withStrategiesXSubgraphStrategyXvertices_inXknowsX_whereXoutXcreatedX_hasXname_lopXXXX_V_name': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.in_('knows').where(__.out('created').has('name','lop')),'edges':__.and_(__.inV().filter_(__.in_('knows').where(__.out('created').has('name','lop'))),__.outV().filter_(__.in_('knows').where(__.out('created').has('name','lop'))))}, 'org.apache.tinkerpop.gremlin.process.traversal. [...]
+    'g_withStrategiesXSubgraphStrategyXvertices_in_hasXname_markoX_outXcreatedX_hasXname_lopXXXX_V_name': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.in_().where(__.has('name','marko').out('created').has('name','lop')),'edges':__.and_(__.inV().filter_(__.in_().where(__.has('name','marko').out('created').has('name','lop'))),__.outV().filter_(__.in_().where(__.has('name','marko').out('created').has('name','lop'))))}, 'org.a [...]
+    'g_withStrategiesXSubgraphStrategyXvertices_orXboth_hasXname_markoX_hasXname_markoXXXX_V_name': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.or_(__.both().has('name','marko'),__.has('name','marko')),'edges':__.and_(__.inV().filter_(__.or_(__.both().has('name','marko'),__.has('name','marko'))),__.outV().filter_(__.or_(__.both().has('name','marko'),__.has('name','marko'))))}, 'org.apache.tinkerpop.gremlin.process.travers [...]
+    'g_withStrategiesXSubgraphStrategyXsubgraphCXX_V': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphCXX_E': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).E())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_outE': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).outE())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_inE': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).inE())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_out': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).out())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_in': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).in_())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_both': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).both())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_bothE': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).bothE())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_localXbothE_limitX1XX': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).local(__.bothE()[0:1]))], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphCXX_EX11X_bothV': [(lambda g, eid11=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).E(eid11).bothV())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphCXX_EX12X_bothV': [(lambda g, eid12=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).E(eid12).bothV())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphCXX_EX9X_bothV': [(lambda g, eid9=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).E(eid9).bothV())], 
+    'g_withStrategiesXSubgraphStrategyXvertices_hasXname_withinXripple_josh_markoXXX_V_asXaX_out_in_asXbX_dedupXa_bX_name': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.within(['ripple','josh','marko'])),'edges':__.and_(__.inV().filter_(__.has('name',P.within(['ripple','josh','marko']))),__.outV().filter_(__.has('name',P.within(['ripple','josh','marko']))))}, 'org.apache.tinkerpop.gremlin.process.traversal.str [...]
+    'g_withStrategiesXSubgraphStrategyXvertexProperties_hasXstartTime_gtX2005XXXX_V_propertiesXlocationX_value': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertexProperties':__.has('startTime',P.gt(2005))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V().properties('location').value())], 
+    'g_withStrategiesXSubgraphStrategyXvertexProperties_hasXstartTime_gtX2005XXXX_V_valuesXlocationX': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertexProperties':__.has('startTime',P.gt(2005))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V().location)], 
+    'g_withStrategiesXSubgraphStrategyXvertexProperties_hasXstartTime_gtX2005XXXX_V_asXaX_propertiesXlocationX_asXbX_selectXaX_outE_properties_selectXbX_value_dedup': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertexProperties':__.has('startTime',P.gt(2005))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V().as_('a').properties('location').as_('b').select('a').outE().properties().select('b' [...]
+    'g_withStrategiesXSubgraphStrategyXvertexProperties_hasXstartTime_gtX2005XXXX_V_asXaX_valuesXlocationX_asXbX_selectXaX_outE_properties_selectXbX_dedup': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertexProperties':__.has('startTime',P.gt(2005))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V().as_('a').location.as_('b').select('a').outE().properties().select('b').dedup())], 
+    'g_withStrategiesXSubgraphStrategyXvertices_hasXname_neqXstephenXX_vertexProperties_hasXstartTime_gtX2005XXXX_V_propertiesXlocationX_value': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.neq('stephen')),'edges':__.and_(__.inV().filter_(__.has('name',P.neq('stephen'))),__.outV().filter_(__.has('name',P.neq('stephen')))),'vertexProperties':__.has('startTime',P.gt(2005))}, 'org.apache.tinkerpop.gremlin.process [...]
+    'g_withStrategiesXSubgraphStrategyXvertices_hasXname_neqXstephenXX_vertexProperties_hasXstartTime_gtX2005XXXX_V_valuesXlocationX': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'vertices':__.has('name',P.neq('stephen')),'edges':__.and_(__.inV().filter_(__.has('name',P.neq('stephen'))),__.outV().filter_(__.has('name',P.neq('stephen')))),'vertexProperties':__.has('startTime',P.gt(2005))}, 'org.apache.tinkerpop.gremlin.process.traversal [...]
+    'g_withStrategiesXSubgraphStrategyXedges_hasLabelXusesX_hasXskill_5XXX_V_outE_valueMap_selectXvaluesX_unfold': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':True,'edges':__.hasLabel('uses').has('skill',5)}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V().outE().valueMap().select(Column.values).unfold())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphDXX_V': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':False,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphDXX_E': [(lambda g:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':False,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).E())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_outE': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':False,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).outE())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_inE': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':False,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).inE())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_out': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':False,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).out())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_in': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':False,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).in_())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_both': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':False,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).both())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_bothE': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':False,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).bothE())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_localXbothE_limitX1XX': [(lambda g, vid4=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':False,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).V(vid4).local(__.bothE()[0:1]))], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphDXX_EX11X_bothV': [(lambda g, eid11=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':False,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).E(eid11).bothV())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphDXX_EX12X_bothV': [(lambda g, eid12=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':False,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).E(eid12).bothV())], 
+    'g_withStrategiesXSubgraphStrategyXsubgraphDXX_EX9X_bothV': [(lambda g, eid9=None:g.withStrategies(*[TraversalStrategy('SubgraphStrategy',{'checkAdjacentVertices':False,'vertices':__.has('name',P.within(['josh','lop','ripple'])),'edges':__.or_(__.has('weight',float(0.4)).hasLabel('created'),__.has('weight',float(1.0)).hasLabel('created'))}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy')]).E(eid9).bothV())], 
     'g_VX1X_asXaX_outXcreatedX_addEXcreatedByX_toXaX': [(lambda g, vid1=None:g.addV('person').property('name','marko').property('age',29).as_('marko').addV('person').property('name','vadas').property('age',27).as_('vadas').addV('software').property('name','lop').property('lang','java').as_('lop').addV('person').property('name','josh').property('age',32).as_('josh').addV('software').property('name','ripple').property('lang','java').as_('ripple').addV('person').property('name','peter').pro [...]
     'g_VX1X_asXaX_outXcreatedX_addEXcreatedByX_toXaX_propertyXweight_2X': [(lambda g, vid1=None:g.addV('person').property('name','marko').property('age',29).as_('marko').addV('person').property('name','vadas').property('age',27).as_('vadas').addV('software').property('name','lop').property('lang','java').as_('lop').addV('person').property('name','josh').property('age',32).as_('josh').addV('software').property('name','ripple').property('lang','java').as_('ripple').addV('person').property( [...]
     'g_V_outE_propertyXweight_nullX': [(lambda g:g.addV('person').property('name','marko').property('age',29).as_('marko').addV('person').property('name','vadas').property('age',27).as_('vadas').addV('software').property('name','lop').property('lang','java').as_('lop').addV('person').property('name','josh').property('age',32).as_('josh').addV('software').property('name','ripple').property('lang','java').as_('ripple').addV('person').property('name','peter').property('age',35).as_('peter') [...]
diff --git a/gremlin-test/features/integrated/SubgraphStrategy.feature b/gremlin-test/features/integrated/SubgraphStrategy.feature
new file mode 100644
index 0000000..c75c843
--- /dev/null
+++ b/gremlin-test/features/integrated/SubgraphStrategy.feature
@@ -0,0 +1,916 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+@StepClassIntegrated
+Feature: Step - SubgraphStrategy
+
+  # subgraphA = new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")))
+  #
+  # subgraphB = new SubgraphStrategy(edges: or(
+  #                has("weight", 1.0).hasLabel("knows"), // 8
+  #                has("weight", 0.4).hasLabel("created").outV().has("name", "marko"), // 9
+  #                has("weight", 1.0).hasLabel("created"))) // 10
+  #
+  # edge 9 isn't present because marko is not in the vertex list
+  # subgraphC = new SubgraphStrategy(vertices: has("name", P.within("josh", "lop", "ripple")),
+  #                                  edges: or(has("weight", 0.4).hasLabel("created"), // 11
+  #                                               has("weight", 1.0).hasLabel("created"))) // 10
+  #
+  # edge 9 isn't present because marko is not in the vertex list
+  # subgraphD = new SubgraphStrategy(checkAdjacentVertices: false,
+  #                                  vertices: has("name", P.within("josh", "lop", "ripple")),
+  #                                  edges: or(has("weight", 0.4).hasLabel("created"), // 11
+  #                                               has("weight", 1.0).hasLabel("created"))) // 10
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphAXX_V
+    Given the modern graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")))).V()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[lop] |
+      | v[josh] |
+      | v[ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphAXX_E
+    Given the modern graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")))).E()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | e[josh-created->lop] |
+      | e[josh-created->ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_outE
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")))).V(vid4).outE()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | e[josh-created->lop] |
+      | e[josh-created->ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_inE
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")))).V(vid4).inE()
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_out
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")))).V(vid4).out()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[lop] |
+      | v[ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_in
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")))).V(vid4).in()
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_both
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")))).V(vid4).both()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[lop] |
+      | v[ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_bothE
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")))).V(vid4).bothE()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | e[josh-created->lop] |
+      | e[josh-created->ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphAXX_VX4X_localXbothE_limitX1XX
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")))).V(vid4).local(__.bothE().limit(1))
+      """
+    When iterated to list
+    Then the result should have a count of 1
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphAXX_EX11X_bothV
+    Given the modern graph
+    And using the parameter eid11 defined as "e[josh-created->lop].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")))).E(eid11).bothV()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[josh] |
+      | v[lop] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphAXX_EX12X_bothV
+    Given the modern graph
+    And using the parameter eid12 defined as "e[peter-created->lop].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")))).E(eid12).bothV()
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphBXX_V
+    Given the modern graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(edges: __.or(__.has("weight", 1.0).hasLabel("knows"),
+                                                         __.has("weight", 0.4).hasLabel("created").outV().has("name", "marko"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[marko] |
+      | v[vadas] |
+      | v[lop] |
+      | v[josh] |
+      | v[ripple] |
+      | v[peter]  |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphBXX_E
+    Given the modern graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(edges: __.or(__.has("weight", 1.0).hasLabel("knows"),
+                                                         __.has("weight", 0.4).hasLabel("created").outV().has("name", "marko"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).E()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | e[marko-knows->josh] |
+      | e[marko-created->lop] |
+      | e[josh-created->ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX1X_outE
+    Given the modern graph
+    And using the parameter vid1 defined as "v[marko].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(edges: __.or(__.has("weight", 1.0).hasLabel("knows"),
+                                                         __.has("weight", 0.4).hasLabel("created").outV().has("name", "marko"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid1).outE()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | e[marko-knows->josh] |
+      | e[marko-created->lop] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX1X_out
+    Given the modern graph
+    And using the parameter vid1 defined as "v[marko].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(edges: __.or(__.has("weight", 1.0).hasLabel("knows"),
+                                                         __.has("weight", 0.4).hasLabel("created").outV().has("name", "marko"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid1).out()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[josh] |
+      | v[lop] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX1X_outXcreatedX
+    Given the modern graph
+    And using the parameter vid1 defined as "v[marko].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(edges: __.or(__.has("weight", 1.0).hasLabel("knows"),
+                                                         __.has("weight", 0.4).hasLabel("created").outV().has("name", "marko"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid1).out("knows")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[josh] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_outXcreatedX
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(edges: __.or(__.has("weight", 1.0).hasLabel("knows"),
+                                                         __.has("weight", 0.4).hasLabel("created").outV().has("name", "marko"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).out("created")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_outE
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(edges: __.or(__.has("weight", 1.0).hasLabel("knows"),
+                                                         __.has("weight", 0.4).hasLabel("created").outV().has("name", "marko"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).outE()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | e[josh-created->ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_out
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(edges: __.or(__.has("weight", 1.0).hasLabel("knows"),
+                                                         __.has("weight", 0.4).hasLabel("created").outV().has("name", "marko"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).out()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_bothE
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(edges: __.or(__.has("weight", 1.0).hasLabel("knows"),
+                                                         __.has("weight", 0.4).hasLabel("created").outV().has("name", "marko"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).bothE()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | e[marko-knows->josh] |
+      | e[josh-created->ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_both
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(edges: __.or(__.has("weight", 1.0).hasLabel("knows"),
+                                                         __.has("weight", 0.4).hasLabel("created").outV().has("name", "marko"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).both()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[marko] |
+      | v[ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphBXX_VX4X_outV_outE
+    Given the modern graph
+    And using the parameter eid8 defined as "e[marko-knows->josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(edges: __.or(__.has("weight", 1.0).hasLabel("knows"),
+                                                         __.has("weight", 0.4).hasLabel("created").outV().has("name", "marko"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).E(eid8).outV().outE()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | e[marko-knows->josh] |
+      | e[marko-created->lop] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXvertices_inXknowsX_hasXname_markoXXX_V_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.in("knows").has("name", "marko"))).V().values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | vadas |
+      | josh |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXvertices_in_hasXname_markoXXX_V_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.in().has("name", "marko"))).V().values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | vadas |
+      | josh |
+      | lop |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXvertices_inXknowsX_whereXoutXcreatedX_hasXname_lopXXXX_V_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.in("knows").where(__.out("created").has("name", "lop")))).V().values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | vadas |
+      | josh |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXvertices_in_hasXname_markoX_outXcreatedX_hasXname_lopXXXX_V_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.in().where(__.has("name", "marko").out("created").has("name", "lop")))).V().values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | vadas |
+      | josh |
+      | lop |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXvertices_orXboth_hasXname_markoX_hasXname_markoXXXX_V_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.or(__.both().has("name", "marko"), __.has("name", "marko")))).V().where(__.bothE().count().is(P.neq(0))).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | marko |
+      | vadas |
+      | josh |
+      | lop |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphCXX_V
+    Given the modern graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[lop] |
+      | v[josh] |
+      | v[ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphCXX_E
+    Given the modern graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).E()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | e[josh-created->lop] |
+      | e[josh-created->ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_outE
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).outE()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | e[josh-created->lop] |
+      | e[josh-created->ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_inE
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).inE()
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_out
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).out()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[lop] |
+      | v[ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_in
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).in()
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_both
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).both()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[lop] |
+      | v[ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_bothE
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).bothE()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | e[josh-created->lop] |
+      | e[josh-created->ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphCXX_VX4X_localXbothE_limitX1XX
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).local(__.bothE().limit(1))
+      """
+    When iterated to list
+    Then the result should have a count of 1
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphCXX_EX11X_bothV
+    Given the modern graph
+    And using the parameter eid11 defined as "e[josh-created->lop].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).E(eid11).bothV()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[josh] |
+      | v[lop] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphCXX_EX12X_bothV
+    Given the modern graph
+    And using the parameter eid12 defined as "e[peter-created->lop].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).E(eid12).bothV()
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphCXX_EX9X_bothV
+    Given the modern graph
+    And using the parameter eid9 defined as "e[marko-created->lop].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).E(eid9).bothV()
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXvertices_hasXname_withinXripple_josh_markoXXX_V_asXaX_out_in_asXbX_dedupXa_bX_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertices: __.has("name", P.within("ripple", "josh", "marko")))).V().as("a").
+        out().in().as("b").dedup("a", "b").values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | marko |
+      | josh |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXvertexProperties_hasXstartTime_gtX2005XXXX_V_propertiesXlocationX_value
+    Given the crew graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertexProperties: __.has("startTime", P.gt(2005)))).V().properties("location").value()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | purcellville |
+      | baltimore |
+      | oakland |
+      | seattle |
+      | aachen |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXvertexProperties_hasXstartTime_gtX2005XXXX_V_valuesXlocationX
+    Given the crew graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertexProperties: __.has("startTime", P.gt(2005)))).V().values("location")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | purcellville |
+      | baltimore |
+      | oakland |
+      | seattle |
+      | aachen |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXvertexProperties_hasXstartTime_gtX2005XXXX_V_asXaX_propertiesXlocationX_asXbX_selectXaX_outE_properties_selectXbX_value_dedup
+    Given the crew graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertexProperties: __.has("startTime", P.gt(2005)))).V().as("a").
+        properties("location").as("b").select("a").outE().properties().select("b").value().dedup()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | purcellville |
+      | baltimore |
+      | oakland |
+      | seattle |
+      | aachen |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXvertexProperties_hasXstartTime_gtX2005XXXX_V_asXaX_valuesXlocationX_asXbX_selectXaX_outE_properties_selectXbX_dedup
+    Given the crew graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertexProperties: __.has("startTime", P.gt(2005)))).V().as("a").
+        values("location").as("b").select("a").outE().properties().select("b").dedup()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | purcellville |
+      | baltimore |
+      | oakland |
+      | seattle |
+      | aachen |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXvertices_hasXname_neqXstephenXX_vertexProperties_hasXstartTime_gtX2005XXXX_V_propertiesXlocationX_value
+    Given the crew graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertexProperties: __.has("startTime", P.gt(2005)),
+                                            vertices: __.has("name", P.neq("stephen")))).V().properties("location").value()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | baltimore |
+      | oakland |
+      | seattle |
+      | aachen |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXvertices_hasXname_neqXstephenXX_vertexProperties_hasXstartTime_gtX2005XXXX_V_valuesXlocationX
+    Given the crew graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(vertexProperties: __.has("startTime", P.gt(2005)),
+                                            vertices: __.has("name", P.neq("stephen")))).V().values("location")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | baltimore |
+      | oakland |
+      | seattle |
+      | aachen |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXedges_hasLabelXusesX_hasXskill_5XXX_V_outE_valueMap_selectXvaluesX_unfold
+    Given the crew graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(edges: __.hasLabel("uses").has("skill", 5))).V().
+        outE().valueMap().select(Column.values).unfold()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | d[5].i |
+      | d[5].i |
+      | d[5].i |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphDXX_V
+    Given the modern graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(checkAdjacentVertices: false,
+                                            vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[lop] |
+      | v[josh] |
+      | v[ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphDXX_E
+    Given the modern graph
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(checkAdjacentVertices: false,
+                                            vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).E()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | e[marko-created->lop] |
+      | e[josh-created->lop] |
+      | e[josh-created->ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_outE
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(checkAdjacentVertices: false,
+                                            vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).outE()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | e[josh-created->lop] |
+      | e[josh-created->ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_inE
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(checkAdjacentVertices: false,
+                                            vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).inE()
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_out
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(checkAdjacentVertices: false,
+                                            vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).out()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[lop] |
+      | v[ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_in
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(checkAdjacentVertices: false,
+                                            vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).in()
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_both
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(checkAdjacentVertices: false,
+                                            vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).both()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[lop] |
+      | v[ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_bothE
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(checkAdjacentVertices: false,
+                                            vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).bothE()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | e[josh-created->lop] |
+      | e[josh-created->ripple] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphDXX_VX4X_localXbothE_limitX1XX
+    Given the modern graph
+    And using the parameter vid4 defined as "v[josh].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(checkAdjacentVertices: false,
+                                            vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).V(vid4).local(__.bothE().limit(1))
+      """
+    When iterated to list
+    Then the result should have a count of 1
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphDXX_EX11X_bothV
+    Given the modern graph
+    And using the parameter eid11 defined as "e[josh-created->lop].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(checkAdjacentVertices: false,
+                                            vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).E(eid11).bothV()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[josh] |
+      | v[lop] |
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphDXX_EX12X_bothV
+    Given the modern graph
+    And using the parameter eid12 defined as "e[peter-created->lop].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(checkAdjacentVertices: false,
+                                            vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).E(eid12).bothV()
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @WithSubgraphStrategy @GraphComputerVerificationStarGraphExceeded
+  Scenario: g_withStrategiesXSubgraphStrategyXsubgraphDXX_EX9X_bothV
+    Given the modern graph
+    And using the parameter eid9 defined as "e[marko-created->lop].id"
+    And the traversal of
+      """
+      g.withStrategies(new SubgraphStrategy(checkAdjacentVertices: false,
+                                            vertices: __.has("name", P.within("josh", "lop", "ripple")),
+                                            edges: __.or(__.has("weight", 0.4).hasLabel("created"),
+                                                         __.has("weight", 1.0).hasLabel("created")))).E(eid9).bothV()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[lop] |
\ No newline at end of file
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessLimitedComputerSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessLimitedComputerSuite.java
index 24641f0..a9ceb26 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessLimitedComputerSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessLimitedComputerSuite.java
@@ -137,9 +137,6 @@ public class ProcessLimitedComputerSuite extends AbstractGremlinSuite {
             // creations
             TranslationStrategyProcessTest.class,
 
-            // decorations
-            SubgraphStrategyProcessTest.class,
-
             // optimizations
             IncidentToAdjacentStrategyProcessTest.class,
             EarlyLimitStrategyProcessTest.class
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessLimitedStandardSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessLimitedStandardSuite.java
index 19978db..c24f69b 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessLimitedStandardSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessLimitedStandardSuite.java
@@ -80,7 +80,6 @@ public class ProcessLimitedStandardSuite extends AbstractGremlinSuite {
             ElementIdStrategyProcessTest.class,
             EventStrategyProcessTest.class,
             PartitionStrategyProcessTest.class,
-            SubgraphStrategyProcessTest.class,
 
             // optimizations
             IncidentToAdjacentStrategyProcessTest.class,