Fix merge of 'tp32' into master for TINKERPOP-1752 branch

Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ab2fd2ca
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ab2fd2ca
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ab2fd2ca

Branch: refs/heads/master
Commit: ab2fd2cadd64a7af1438977ad9d31e9feff16eec
Parents: 8e224ef
Author: florianhockmann <[email protected]>
Authored: Wed Nov 1 19:35:53 2017 +0100
Committer: florianhockmann <[email protected]>
Committed: Wed Nov 1 19:35:53 2017 +0100

----------------------------------------------------------------------
 gremlin-dotnet/glv/generate.groovy              |  25 +--
 .../Process/Traversal/GraphTraversal.cs         | 154 ++++++++-----------
 .../Process/Traversal/GraphTraversalSource.cs   |  37 +++--
 .../src/Gremlin.Net/Process/Traversal/__.cs     | 122 +++++----------
 .../GraphTraversalTests.cs                      |   2 +-
 .../GraphSON/BytecodeGraphSONSerializerTests.cs |   4 +-
 .../IO/GraphSON/GraphSONWriterTests.cs          |   6 +-
 7 files changed, 140 insertions(+), 210 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ab2fd2ca/gremlin-dotnet/glv/generate.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/generate.groovy 
b/gremlin-dotnet/glv/generate.groovy
index 4e5997f..791654e 100644
--- a/gremlin-dotnet/glv/generate.groovy
+++ b/gremlin-dotnet/glv/generate.groovy
@@ -71,6 +71,7 @@ def methodsWithSpecificTypes = ["constant": useE2,
                                 "skip": useE2,
                                 "sum": useE2,
                                 "tail": useE2,
+                                "unfold": useE2,
                                 "valueMap": ["IDictionary<TKey, TValue>", 
"TKey, TValue"],]
 
 def getCSharpGenericTypeParam = { typeName ->
@@ -165,24 +166,6 @@ def hasMethodNoGenericCounterPartInGraphTraversal = { 
method ->
     if (method.name.equals("fold")) {
         return parameterTypeNames.size() == 0
     }
-    if (method.name.equals("limit")) {
-        if (parameterTypeNames.size() == 1) {
-            return parameterTypeNames[0].equals("long")
-        }
-    }
-    if (method.name.equals("range")) {
-        if (parameterTypeNames.size() == 2) {
-            return parameterTypeNames[0].equals("long") && 
parameterTypeNames[1].equals("long")
-        }
-    }
-    if (method.name.equals("tail")) {
-        if (parameterTypeNames.size() == 0) {
-            return true
-        }
-        if (parameterTypeNames.size() == 1) {
-            return parameterTypeNames[0].equals("long")
-        }
-    }
     return false
 }
 
@@ -205,7 +188,6 @@ def binding = ["pmethods": P.class.getMethods().
                         findAll { 
GraphTraversalSource.class.equals(it.returnType) }.
                         findAll {
                             !it.name.equals("clone") &&
-                                    
!it.name.equals(TraversalSource.Symbols.withBindings) &&
                                     
!it.name.equals(TraversalSource.Symbols.withRemote) &&
                                     
!it.name.equals(TraversalSource.Symbols.withComputer)
                         }.
@@ -239,6 +221,11 @@ def binding = ["pmethods": P.class.getMethods().
                             def t1 = toCSharpType(typeNames[0])
                             def t2 = toCSharpType(typeNames[1])
                             def tParam = getCSharpGenericTypeParam(t2)
+                            def specificTypes = 
methodsWithSpecificTypes.get(javaMethod.name)
+                            if (specificTypes) {
+                                t2 = specificTypes[0]
+                                tParam = specificTypes.size() > 1 ? "<" + 
specificTypes[1] + ">" : ""
+                            }
                             def parameters = getCSharpParamString(javaMethod)
                             def paramNames = 
getParamNames(javaMethod.parameters)
                             return ["methodName": javaMethod.name, "t1":t1, 
"t2":t2, "tParam":tParam, "parameters":parameters, "paramNames":paramNames]

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ab2fd2ca/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs 
b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
index 601e381..45d55f5 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -76,17 +76,6 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the addE step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Edge > AddE (Direction direction, string 
firstVertexKeyOrEdgeLabel, string edgeLabelOrSecondVertexKey, params object[] 
propertyKeyValues)
-        {
-            var args = new List<object>(3 + propertyKeyValues.Length) 
{direction, firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey};
-            args.AddRange(propertyKeyValues);
-            Bytecode.AddStep("addE", args.ToArray());
-            return Wrap< S , Edge >(this);
-        }
-
-        /// <summary>
-        ///     Adds the addE step to this <see cref="GraphTraversal{SType, 
EType}" />.
-        /// </summary>
         public GraphTraversal< S , Edge > AddE (string edgeLabel)
         {
             Bytecode.AddStep("addE", edgeLabel);
@@ -94,24 +83,11 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
-        ///     Adds the addInE step to this <see cref="GraphTraversal{SType, 
EType}" />.
-        /// </summary>
-        public GraphTraversal< S , Edge > AddInE (string 
firstVertexKeyOrEdgeLabel, string edgeLabelOrSecondVertexKey, params object[] 
propertyKeyValues)
-        {
-            var args = new List<object>(2 + propertyKeyValues.Length) 
{firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey};
-            args.AddRange(propertyKeyValues);
-            Bytecode.AddStep("addInE", args.ToArray());
-            return Wrap< S , Edge >(this);
-        }
-
-        /// <summary>
-        ///     Adds the addOutE step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        ///     Adds the addE step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Edge > AddOutE (string 
firstVertexKeyOrEdgeLabel, string edgeLabelOrSecondVertexKey, params object[] 
propertyKeyValues)
+        public GraphTraversal< S , Edge > AddE (ITraversal edgeLabelTraversal)
         {
-            var args = new List<object>(2 + propertyKeyValues.Length) 
{firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey};
-            args.AddRange(propertyKeyValues);
-            Bytecode.AddStep("addOutE", args.ToArray());
+            Bytecode.AddStep("addE", edgeLabelTraversal);
             return Wrap< S , Edge >(this);
         }
 
@@ -127,20 +103,18 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the addV step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Vertex > AddV (params object[] 
propertyKeyValues)
+        public GraphTraversal< S , Vertex > AddV (string vertexLabel)
         {
-            var args = new List<object>(0 + propertyKeyValues.Length) {};
-            args.AddRange(propertyKeyValues);
-            Bytecode.AddStep("addV", args.ToArray());
+            Bytecode.AddStep("addV", vertexLabel);
             return Wrap< S , Vertex >(this);
         }
 
         /// <summary>
         ///     Adds the addV step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Vertex > AddV (string vertexLabel)
+        public GraphTraversal< S , Vertex > AddV (ITraversal 
vertexLabelTraversal)
         {
-            Bytecode.AddStep("addV", vertexLabel);
+            Bytecode.AddStep("addV", vertexLabelTraversal);
             return Wrap< S , Vertex >(this);
         }
 
@@ -584,6 +558,15 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
+        ///     Adds the from step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > From (Vertex fromVertex)
+        {
+            Bytecode.AddStep("from", fromVertex);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
         ///     Adds the group step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
         public GraphTraversal< S , IDictionary<K, V> > Group<K, V> ()
@@ -620,24 +603,6 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
-        ///     Adds the groupV3d0 step to this <see 
cref="GraphTraversal{SType, EType}" />.
-        /// </summary>
-        public GraphTraversal< S , IDictionary<K, V> > GroupV3d0<K, V> ()
-        {
-            Bytecode.AddStep("groupV3d0");
-            return Wrap< S , IDictionary<K, V> >(this);
-        }
-
-        /// <summary>
-        ///     Adds the groupV3d0 step to this <see 
cref="GraphTraversal{SType, EType}" />.
-        /// </summary>
-        public GraphTraversal< S , E > GroupV3d0 (string sideEffectKey)
-        {
-            Bytecode.AddStep("groupV3d0", sideEffectKey);
-            return Wrap< S , E >(this);
-        }
-
-        /// <summary>
         ///     Adds the has step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
         public GraphTraversal< S , E > Has (string propertyKey)
@@ -915,10 +880,10 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the limit step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Limit (long limit)
+        public GraphTraversal< S , E2 > Limit<E2> (long limit)
         {
             Bytecode.AddStep("limit", limit);
-            return Wrap< S , E >(this);
+            return Wrap< S , E2 >(this);
         }
 
         /// <summary>
@@ -958,24 +923,6 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
-        ///     Adds the mapKeys step to this <see cref="GraphTraversal{SType, 
EType}" />.
-        /// </summary>
-        public GraphTraversal< S , E2 > MapKeys<E2> ()
-        {
-            Bytecode.AddStep("mapKeys");
-            return Wrap< S , E2 >(this);
-        }
-
-        /// <summary>
-        ///     Adds the mapValues step to this <see 
cref="GraphTraversal{SType, EType}" />.
-        /// </summary>
-        public GraphTraversal< S , E2 > MapValues<E2> ()
-        {
-            Bytecode.AddStep("mapValues");
-            return Wrap< S , E2 >(this);
-        }
-
-        /// <summary>
         ///     Adds the match step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
         public GraphTraversal< S , IDictionary<string, E2> > Match<E2> (params 
ITraversal[] matchTraversals)
@@ -987,6 +934,15 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
+        ///     Adds the math step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , double > Math (string expression)
+        {
+            Bytecode.AddStep("math", expression);
+            return Wrap< S , double >(this);
+        }
+
+        /// <summary>
         ///     Adds the max step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
         public GraphTraversal< S , E2 > Max<E2> ()
@@ -1275,10 +1231,10 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the range step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Range (long low, long high)
+        public GraphTraversal< S , E2 > Range<E2> (long low, long high)
         {
             Bytecode.AddStep("range", low, high);
-            return Wrap< S , E >(this);
+            return Wrap< S , E2 >(this);
         }
 
         /// <summary>
@@ -1309,15 +1265,6 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
-        ///     Adds the sack step to this <see cref="GraphTraversal{SType, 
EType}" />.
-        /// </summary>
-        public GraphTraversal< S , E > Sack (object sackOperator, string 
elementPropertyKey)
-        {
-            Bytecode.AddStep("sack", sackOperator, elementPropertyKey);
-            return Wrap< S , E >(this);
-        }
-
-        /// <summary>
         ///     Adds the sample step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
         public GraphTraversal< S , E > Sample (Scope scope, int amountToSample)
@@ -1412,6 +1359,24 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
+        ///     Adds the skip step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Skip<E2> (Scope scope, long skip)
+        {
+            Bytecode.AddStep("skip", scope, skip);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the skip step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Skip<E2> (long skip)
+        {
+            Bytecode.AddStep("skip", skip);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
         ///     Adds the store step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
         public GraphTraversal< S , E > Store (string sideEffectKey)
@@ -1450,10 +1415,10 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the tail step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Tail ()
+        public GraphTraversal< S , E2 > Tail<E2> ()
         {
             Bytecode.AddStep("tail");
-            return Wrap< S , E >(this);
+            return Wrap< S , E2 >(this);
         }
 
         /// <summary>
@@ -1477,10 +1442,10 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the tail step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Tail (long limit)
+        public GraphTraversal< S , E2 > Tail<E2> (long limit)
         {
             Bytecode.AddStep("tail", limit);
-            return Wrap< S , E >(this);
+            return Wrap< S , E2 >(this);
         }
 
         /// <summary>
@@ -1531,6 +1496,15 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
+        ///     Adds the to step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > To (Vertex toVertex)
+        {
+            Bytecode.AddStep("to", toVertex);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
         ///     Adds the toE step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
         public GraphTraversal< S , Edge > ToE (Direction direction, params 
string[] edgeLabels)
@@ -1618,23 +1592,23 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the valueMap step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , IDictionary<string, E2> > ValueMap<E2> 
(params string[] propertyKeys)
+        public GraphTraversal< S , IDictionary<TKey, TValue> > ValueMap<TKey, 
TValue> (params string[] propertyKeys)
         {
             var args = new List<object>(0 + propertyKeys.Length) {};
             args.AddRange(propertyKeys);
             Bytecode.AddStep("valueMap", args.ToArray());
-            return Wrap< S , IDictionary<string, E2> >(this);
+            return Wrap< S , IDictionary<TKey, TValue> >(this);
         }
 
         /// <summary>
         ///     Adds the valueMap step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , IDictionary<string, E2> > ValueMap<E2> 
(bool includeTokens, params string[] propertyKeys)
+        public GraphTraversal< S , IDictionary<TKey, TValue> > ValueMap<TKey, 
TValue> (bool includeTokens, params string[] propertyKeys)
         {
             var args = new List<object>(1 + propertyKeys.Length) 
{includeTokens};
             args.AddRange(propertyKeys);
             Bytecode.AddStep("valueMap", args.ToArray());
-            return Wrap< S , IDictionary<string, E2> >(this);
+            return Wrap< S , IDictionary<TKey, TValue> >(this);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ab2fd2ca/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
----------------------------------------------------------------------
diff --git 
a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs 
b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
index 63ef48e..9453505 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
@@ -210,37 +210,35 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
-        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> off this 
graph traversal source and adds the addV step to that
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> off this 
graph traversal source and adds the addE step to that
         ///     traversal.
         /// </summary>
-        public GraphTraversal< Vertex,Vertex > AddV()
+        public GraphTraversal< Edge,Edge > AddE(string label)
         {
-            var traversal = new GraphTraversal< Vertex,Vertex 
>(TraversalStrategies, new Bytecode(Bytecode));
-                traversal.Bytecode.AddStep("addV");
+            var traversal = new GraphTraversal< Edge,Edge 
>(TraversalStrategies, new Bytecode(Bytecode));
+                traversal.Bytecode.AddStep("addE", label);
             return traversal;
         }
 
         /// <summary>
-        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> off this 
graph traversal source and adds the addV step to that
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> off this 
graph traversal source and adds the addE step to that
         ///     traversal.
         /// </summary>
-        public GraphTraversal< Vertex,Vertex > AddV(params object[] keyValues)
+        public GraphTraversal< Edge,Edge > AddE(ITraversal edgeLabelTraversal)
         {
-            var traversal = new GraphTraversal< Vertex,Vertex 
>(TraversalStrategies, new Bytecode(Bytecode));
-            var args = new List<object>(0 + keyValues.Length) {};
-            args.AddRange(keyValues);
-            traversal.Bytecode.AddStep("addV", args.ToArray());
+            var traversal = new GraphTraversal< Edge,Edge 
>(TraversalStrategies, new Bytecode(Bytecode));
+                traversal.Bytecode.AddStep("addE", edgeLabelTraversal);
             return traversal;
         }
 
         /// <summary>
-        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> off this 
graph traversal source and adds the addE step to that
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> off this 
graph traversal source and adds the addV step to that
         ///     traversal.
         /// </summary>
-        public GraphTraversal< Edge,Edge > AddE(params object[] args)
+        public GraphTraversal< Vertex,Vertex > AddV()
         {
-            var traversal = new GraphTraversal< Edge,Edge 
>(TraversalStrategies, new Bytecode(Bytecode));
-            traversal.Bytecode.AddStep("addE", args);
+            var traversal = new GraphTraversal< Vertex,Vertex 
>(TraversalStrategies, new Bytecode(Bytecode));
+                traversal.Bytecode.AddStep("addV");
             return traversal;
         }
 
@@ -255,6 +253,17 @@ namespace Gremlin.Net.Process.Traversal
             return traversal;
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> off this 
graph traversal source and adds the addV step to that
+        ///     traversal.
+        /// </summary>
+        public GraphTraversal< Vertex,Vertex > AddV(ITraversal 
vertexLabelTraversal)
+        {
+            var traversal = new GraphTraversal< Vertex,Vertex 
>(TraversalStrategies, new Bytecode(Bytecode));
+                traversal.Bytecode.AddStep("addV", vertexLabelTraversal);
+            return traversal;
+        }
+
     }
     
 #pragma warning restore 1591

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ab2fd2ca/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs 
b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
index c9ced7b..bcb400a 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
@@ -53,39 +53,17 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the addE step to that traversal.
         /// </summary>
-        public static GraphTraversal<object, Edge> AddE(Direction direction, 
string firstVertexKeyOrEdgeLabel, string edgeLabelOrSecondVertexKey, params 
object[] propertyKeyValues)
-        {
-            return propertyKeyValues.Length == 0
-                ? new GraphTraversal<object, Edge>().AddE(direction, 
firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey)
-                : new GraphTraversal<object, Edge>().AddE(direction, 
firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey, propertyKeyValues);      
      
-        }
-
-        /// <summary>
-        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the addE step to that traversal.
-        /// </summary>
         public static GraphTraversal<object, Edge> AddE(string edgeLabel)
         {
             return new GraphTraversal<object, Edge>().AddE(edgeLabel);         
   
         }
 
         /// <summary>
-        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the addInE step to that traversal.
-        /// </summary>
-        public static GraphTraversal<object, Edge> AddInE(string 
firstVertexKeyOrEdgeLabel, string edgeLabelOrSecondVertexKey, params object[] 
propertyKeyValues)
-        {
-            return propertyKeyValues.Length == 0
-                ? new GraphTraversal<object, 
Edge>().AddInE(firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey)
-                : new GraphTraversal<object, 
Edge>().AddInE(firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey, 
propertyKeyValues);            
-        }
-
-        /// <summary>
-        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the addOutE step to that traversal.
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the addE step to that traversal.
         /// </summary>
-        public static GraphTraversal<object, Edge> AddOutE(string 
firstVertexKeyOrEdgeLabel, string edgeLabelOrSecondVertexKey, params object[] 
propertyKeyValues)
+        public static GraphTraversal<object, Edge> AddE(ITraversal 
edgeLabelTraversal)
         {
-            return propertyKeyValues.Length == 0
-                ? new GraphTraversal<object, 
Edge>().AddOutE(firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey)
-                : new GraphTraversal<object, 
Edge>().AddOutE(firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey, 
propertyKeyValues);            
+            return new GraphTraversal<object, 
Edge>().AddE(edgeLabelTraversal);            
         }
 
         /// <summary>
@@ -99,19 +77,17 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the addV step to that traversal.
         /// </summary>
-        public static GraphTraversal<object, Vertex> AddV(params object[] 
propertyKeyValues)
+        public static GraphTraversal<object, Vertex> AddV(string vertexLabel)
         {
-            return propertyKeyValues.Length == 0
-                ? new GraphTraversal<object, Vertex>().AddV()
-                : new GraphTraversal<object, 
Vertex>().AddV(propertyKeyValues);            
+            return new GraphTraversal<object, Vertex>().AddV(vertexLabel);     
       
         }
 
         /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the addV step to that traversal.
         /// </summary>
-        public static GraphTraversal<object, Vertex> AddV(string vertexLabel)
+        public static GraphTraversal<object, Vertex> AddV(ITraversal 
vertexLabelTraversal)
         {
-            return new GraphTraversal<object, Vertex>().AddV(vertexLabel);     
       
+            return new GraphTraversal<object, 
Vertex>().AddV(vertexLabelTraversal);            
         }
 
         /// <summary>
@@ -451,22 +427,6 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
-        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the groupV3d0 step to that traversal.
-        /// </summary>
-        public static GraphTraversal<object, IDictionary<K, V>> GroupV3d0<K, 
V>()
-        {
-            return new GraphTraversal<object, IDictionary<K, 
V>>().GroupV3d0<K, V>();            
-        }
-
-        /// <summary>
-        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the groupV3d0 step to that traversal.
-        /// </summary>
-        public static GraphTraversal<object, object> GroupV3d0(string 
sideEffectKey)
-        {
-            return new GraphTraversal<object, 
object>().GroupV3d0(sideEffectKey);            
-        }
-
-        /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the has step to that traversal.
         /// </summary>
         public static GraphTraversal<object, object> Has(string propertyKey)
@@ -717,7 +677,7 @@ namespace Gremlin.Net.Process.Traversal
         /// </summary>
         public static GraphTraversal<object, E2> Limit<E2>(long limit)
         {
-            return new GraphTraversal<object, E2>().Limit(limit);            
+            return new GraphTraversal<object, E2>().Limit<E2>(limit);          
  
         }
 
         /// <summary>
@@ -753,22 +713,6 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
-        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the mapKeys step to that traversal.
-        /// </summary>
-        public static GraphTraversal<object, E2> MapKeys<E2>()
-        {
-            return new GraphTraversal<object, E2>().MapKeys<E2>();            
-        }
-
-        /// <summary>
-        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the mapValues step to that traversal.
-        /// </summary>
-        public static GraphTraversal<object, E2> MapValues<E2>()
-        {
-            return new GraphTraversal<object, E2>().MapValues<E2>();           
 
-        }
-
-        /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the match step to that traversal.
         /// </summary>
         public static GraphTraversal<object, IDictionary<string, E2>> 
Match<E2>(params ITraversal[] matchTraversals)
@@ -779,6 +723,14 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the math step to that traversal.
+        /// </summary>
+        public static GraphTraversal<object, double> Math(string expression)
+        {
+            return new GraphTraversal<object, double>().Math(expression);      
      
+        }
+
+        /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the max step to that traversal.
         /// </summary>
         public static GraphTraversal<object, E2> Max<E2>()
@@ -975,7 +927,7 @@ namespace Gremlin.Net.Process.Traversal
         /// </summary>
         public static GraphTraversal<object, E2> Range<E2>(long low, long high)
         {
-            return new GraphTraversal<object, E2>().Range(low, high);          
  
+            return new GraphTraversal<object, E2>().Range<E2>(low, high);      
      
         }
 
         /// <summary>
@@ -1003,14 +955,6 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
-        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the sack step to that traversal.
-        /// </summary>
-        public static GraphTraversal<object, object> Sack(object sackOperator, 
string elementPropertyKey)
-        {
-            return new GraphTraversal<object, object>().Sack(sackOperator, 
elementPropertyKey);            
-        }
-
-        /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the sample step to that traversal.
         /// </summary>
         public static GraphTraversal<object, object> Sample(Scope scope, int 
amountToSample)
@@ -1095,6 +1039,22 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the skip step to that traversal.
+        /// </summary>
+        public static GraphTraversal<object, E2> Skip<E2>(Scope scope, long 
skip)
+        {
+            return new GraphTraversal<object, E2>().Skip<E2>(scope, skip);     
       
+        }
+
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the skip step to that traversal.
+        /// </summary>
+        public static GraphTraversal<object, E2> Skip<E2>(long skip)
+        {
+            return new GraphTraversal<object, E2>().Skip<E2>(skip);            
+        }
+
+        /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the store step to that traversal.
         /// </summary>
         public static GraphTraversal<object, object> Store(string 
sideEffectKey)
@@ -1131,7 +1091,7 @@ namespace Gremlin.Net.Process.Traversal
         /// </summary>
         public static GraphTraversal<object, E2> Tail<E2>()
         {
-            return new GraphTraversal<object, E2>().Tail();            
+            return new GraphTraversal<object, E2>().Tail<E2>();            
         }
 
         /// <summary>
@@ -1155,7 +1115,7 @@ namespace Gremlin.Net.Process.Traversal
         /// </summary>
         public static GraphTraversal<object, E2> Tail<E2>(long limit)
         {
-            return new GraphTraversal<object, E2>().Tail(limit);            
+            return new GraphTraversal<object, E2>().Tail<E2>(limit);           
 
         }
 
         /// <summary>
@@ -1263,21 +1223,21 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the valueMap step to that traversal.
         /// </summary>
-        public static GraphTraversal<object, IDictionary<string, E2>> 
ValueMap<E2>(params string[] propertyKeys)
+        public static GraphTraversal<object, IDictionary<TKey, TValue>> 
ValueMap<TKey, TValue>(params string[] propertyKeys)
         {
             return propertyKeys.Length == 0
-                ? new GraphTraversal<object, IDictionary<string, 
E2>>().ValueMap<E2>()
-                : new GraphTraversal<object, IDictionary<string, 
E2>>().ValueMap<E2>(propertyKeys);            
+                ? new GraphTraversal<object, IDictionary<TKey, 
TValue>>().ValueMap<TKey, TValue>()
+                : new GraphTraversal<object, IDictionary<TKey, 
TValue>>().ValueMap<TKey, TValue>(propertyKeys);            
         }
 
         /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds 
the valueMap step to that traversal.
         /// </summary>
-        public static GraphTraversal<object, IDictionary<string, E2>> 
ValueMap<E2>(bool includeTokens, params string[] propertyKeys)
+        public static GraphTraversal<object, IDictionary<TKey, TValue>> 
ValueMap<TKey, TValue>(bool includeTokens, params string[] propertyKeys)
         {
             return propertyKeys.Length == 0
-                ? new GraphTraversal<object, IDictionary<string, 
E2>>().ValueMap<E2>(includeTokens)
-                : new GraphTraversal<object, IDictionary<string, 
E2>>().ValueMap<E2>(includeTokens, propertyKeys);            
+                ? new GraphTraversal<object, IDictionary<TKey, 
TValue>>().ValueMap<TKey, TValue>(includeTokens)
+                : new GraphTraversal<object, IDictionary<TKey, 
TValue>>().ValueMap<TKey, TValue>(includeTokens, propertyKeys);            
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ab2fd2ca/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
----------------------------------------------------------------------
diff --git 
a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
 
b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
index cdeecbf..406bbb6 100644
--- 
a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
+++ 
b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
@@ -135,7 +135,7 @@ namespace 
Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
             var g = graph.Traversal().WithRemote(connection);
 
             var shortestPath =
-                
g.V(5).Repeat(__.Both().SimplePath()).Until(__.HasId(6)).Limit(1).Path().Next();
+                
g.V(5).Repeat(__.Both().SimplePath()).Until(__.HasId(6)).Limit<Vertex>(1).Path().Next();
 
             Assert.Equal(4, shortestPath.Count);
             Assert.Equal(new Vertex((long) 6), shortestPath[3]);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ab2fd2ca/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs
----------------------------------------------------------------------
diff --git 
a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs
 
b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs
index 8b87df6..ab7be13 100644
--- 
a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs
+++ 
b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs
@@ -129,7 +129,7 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
         public void ShouldSerializeBytecodeWithSourcesStep(int version)
         {
             var bytecode = new Bytecode();
-            bytecode.AddSource("withSideEffect", "a", new List<string> 
{"josh", "peter"});
+            bytecode.AddSource("withSideEffect", "a", "josh");
             bytecode.AddStep("V", 1);
             bytecode.AddStep("values", "name");
             bytecode.AddStep("where", new TraversalPredicate("within", "a"));
@@ -138,7 +138,7 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             var graphSON = graphsonWriter.WriteObject(bytecode);
 
             var expectedGraphSon =
-                
"{\"@type\":\"g:Bytecode\",\"@value\":{\"source\":[[\"withSideEffect\",\"a\",[\"josh\",\"peter\"]]],\"step\":[[\"V\",{\"@type\":\"g:Int32\",\"@value\":1}],[\"values\",\"name\"],[\"where\",{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"within\",\"value\":\"a\"}}]]}}";
+                
"{\"@type\":\"g:Bytecode\",\"@value\":{\"source\":[[\"withSideEffect\",\"a\",\"josh\"]],\"step\":[[\"V\",{\"@type\":\"g:Int32\",\"@value\":1}],[\"values\",\"name\"],[\"where\",{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"within\",\"value\":\"a\"}}]]}}";
             Assert.Equal(expectedGraphSon, graphSON);
         }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ab2fd2ca/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
----------------------------------------------------------------------
diff --git 
a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
 
b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
index e620ea8..ca38555 100644
--- 
a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
+++ 
b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
@@ -372,10 +372,10 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expected, graphSON);
         }
 
-        [Fact]
-        public void ShouldSerializeTypeToItsObject()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeTypeToItsObject(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
             var type = typeof(SubgraphStrategy);
 
             var graphSon = writer.WriteObject(type);

Reply via email to