http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5f327312/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 2493864..80fc46b 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -65,8 +65,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the V step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Vertex > V (params object[] args)
+        public GraphTraversal< S , Vertex > V (params object[] 
vertexIdsOrElements)
         {
+            var args = new List<object> { vertexIdsOrElements };
             Bytecode.AddStep("V", args);
             return Wrap< S , Vertex >(this);
         }
@@ -74,8 +75,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the addE step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Edge > AddE (params object[] args)
+        public GraphTraversal< S , Edge > AddE (string edgeLabel)
         {
+            var args = new List<object> { edgeLabel };
+            Bytecode.AddStep("addE", args);
+            return Wrap< S , Edge >(this);
+        }
+
+        /// <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> { direction, 
firstVertexKeyOrEdgeLabel, edgeLabelOrSecondVertexKey, propertyKeyValues };
             Bytecode.AddStep("addE", args);
             return Wrap< S , Edge >(this);
         }
@@ -83,8 +95,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the addInE step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Edge > AddInE (params object[] args)
+        public GraphTraversal< S , Edge > AddInE (string 
firstVertexKeyOrEdgeLabel, string edgeLabelOrSecondVertexKey, params object[] 
propertyKeyValues)
         {
+            var args = new List<object> { firstVertexKeyOrEdgeLabel, 
edgeLabelOrSecondVertexKey, propertyKeyValues };
             Bytecode.AddStep("addInE", args);
             return Wrap< S , Edge >(this);
         }
@@ -92,8 +105,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the addOutE step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Edge > AddOutE (params object[] args)
+        public GraphTraversal< S , Edge > AddOutE (string 
firstVertexKeyOrEdgeLabel, string edgeLabelOrSecondVertexKey, params object[] 
propertyKeyValues)
         {
+            var args = new List<object> { firstVertexKeyOrEdgeLabel, 
edgeLabelOrSecondVertexKey, propertyKeyValues };
             Bytecode.AddStep("addOutE", args);
             return Wrap< S , Edge >(this);
         }
@@ -101,8 +115,29 @@ 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[] args)
+        public GraphTraversal< S , Vertex > AddV (string vertexLabel)
+        {
+            var args = new List<object> { vertexLabel };
+            Bytecode.AddStep("addV", args);
+            return Wrap< S , Vertex >(this);
+        }
+
+        /// <summary>
+        ///     Adds the addV step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , Vertex > AddV ()
+        {
+            var args = new List<object> {  };
+            Bytecode.AddStep("addV", args);
+            return Wrap< S , Vertex >(this);
+        }
+
+        /// <summary>
+        ///     Adds the addV step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , Vertex > AddV (params object[] 
propertyKeyValues)
         {
+            var args = new List<object> { propertyKeyValues };
             Bytecode.AddStep("addV", args);
             return Wrap< S , Vertex >(this);
         }
@@ -110,8 +145,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the aggregate step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Aggregate (params object[] args)
+        public GraphTraversal< S , E > Aggregate (string sideEffectKey)
         {
+            var args = new List<object> { sideEffectKey };
             Bytecode.AddStep("aggregate", args);
             return Wrap< S , E >(this);
         }
@@ -119,8 +155,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the and step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > And (params object[] args)
+        public GraphTraversal< S , E > And (params ITraversal[] andTraversals)
         {
+            var args = new List<object> { andTraversals };
             Bytecode.AddStep("and", args);
             return Wrap< S , E >(this);
         }
@@ -128,8 +165,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the as step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > As (params object[] args)
+        public GraphTraversal< S , E > As (string stepLabel, params string[] 
stepLabels)
         {
+            var args = new List<object> { stepLabel, stepLabels };
             Bytecode.AddStep("as", args);
             return Wrap< S , E >(this);
         }
@@ -137,8 +175,29 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the barrier step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Barrier (params object[] args)
+        public GraphTraversal< S , E > Barrier (object barrierConsumer)
+        {
+            var args = new List<object> { barrierConsumer };
+            Bytecode.AddStep("barrier", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the barrier step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Barrier ()
         {
+            var args = new List<object> {  };
+            Bytecode.AddStep("barrier", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the barrier step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Barrier (int maxBarrierSize)
+        {
+            var args = new List<object> { maxBarrierSize };
             Bytecode.AddStep("barrier", args);
             return Wrap< S , E >(this);
         }
@@ -146,8 +205,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the both step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Vertex > Both (params object[] args)
+        public GraphTraversal< S , Vertex > Both (params string[] edgeLabels)
         {
+            var args = new List<object> { edgeLabels };
             Bytecode.AddStep("both", args);
             return Wrap< S , Vertex >(this);
         }
@@ -155,8 +215,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the bothE step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Edge > BothE (params object[] args)
+        public GraphTraversal< S , Edge > BothE (params string[] edgeLabels)
         {
+            var args = new List<object> { edgeLabels };
             Bytecode.AddStep("bothE", args);
             return Wrap< S , Edge >(this);
         }
@@ -164,8 +225,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the bothV step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Vertex > BothV (params object[] args)
+        public GraphTraversal< S , Vertex > BothV ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("bothV", args);
             return Wrap< S , Vertex >(this);
         }
@@ -173,17 +235,119 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the branch step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Branch<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Branch<E2> (object function)
         {
+            var args = new List<object> { function };
             Bytecode.AddStep("branch", args);
             return Wrap< S , E2 >(this);
         }
 
         /// <summary>
+        ///     Adds the branch step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Branch<E2> (ITraversal branchTraversal)
+        {
+            var args = new List<object> { branchTraversal };
+            Bytecode.AddStep("branch", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the by step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > By (ITraversal traversal, object 
comparator)
+        {
+            var args = new List<object> { traversal, comparator };
+            Bytecode.AddStep("by", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the by step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > By ()
+        {
+            var args = new List<object> {  };
+            Bytecode.AddStep("by", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the by step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > By (object comparator)
+        {
+            var args = new List<object> { comparator };
+            Bytecode.AddStep("by", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the by step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > By (Order order)
+        {
+            var args = new List<object> { order };
+            Bytecode.AddStep("by", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the by step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > By (string key, object comparator)
+        {
+            var args = new List<object> { key, comparator };
+            Bytecode.AddStep("by", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the by step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > By (ITraversal traversal)
+        {
+            var args = new List<object> { traversal };
+            Bytecode.AddStep("by", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the by step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > By (object function, object comparator)
+        {
+            var args = new List<object> { function, comparator };
+            Bytecode.AddStep("by", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
         ///     Adds the by step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > By (params object[] args)
+        public GraphTraversal< S , E > By (T token)
         {
+            var args = new List<object> { token };
+            Bytecode.AddStep("by", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the by step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > By (object function)
+        {
+            var args = new List<object> { function };
+            Bytecode.AddStep("by", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the by step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > By (string key)
+        {
+            var args = new List<object> { key };
             Bytecode.AddStep("by", args);
             return Wrap< S , E >(this);
         }
@@ -191,8 +355,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the cap step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Cap<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Cap<E2> (string sideEffectKey, params 
string[] sideEffectKeys)
         {
+            var args = new List<object> { sideEffectKey, sideEffectKeys };
             Bytecode.AddStep("cap", args);
             return Wrap< S , E2 >(this);
         }
@@ -200,8 +365,59 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the choose step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Choose<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Choose<E2> (TraversalPredicate 
choosePredicate, ITraversal trueChoice)
         {
+            var args = new List<object> { choosePredicate, trueChoice };
+            Bytecode.AddStep("choose", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the choose step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Choose<E2> (object choiceFunction)
+        {
+            var args = new List<object> { choiceFunction };
+            Bytecode.AddStep("choose", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the choose step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Choose<E2> (ITraversal choiceTraversal)
+        {
+            var args = new List<object> { choiceTraversal };
+            Bytecode.AddStep("choose", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the choose step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Choose<E2> (ITraversal 
traversalPredicate, ITraversal trueChoice)
+        {
+            var args = new List<object> { traversalPredicate, trueChoice };
+            Bytecode.AddStep("choose", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the choose step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Choose<E2> (ITraversal 
traversalPredicate, ITraversal trueChoice, ITraversal falseChoice)
+        {
+            var args = new List<object> { traversalPredicate, trueChoice, 
falseChoice };
+            Bytecode.AddStep("choose", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the choose step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Choose<E2> (TraversalPredicate 
choosePredicate, ITraversal trueChoice, ITraversal falseChoice)
+        {
+            var args = new List<object> { choosePredicate, trueChoice, 
falseChoice };
             Bytecode.AddStep("choose", args);
             return Wrap< S , E2 >(this);
         }
@@ -209,8 +425,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the coalesce step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Coalesce<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Coalesce<E2> (params ITraversal[] 
coalesceTraversals)
         {
+            var args = new List<object> { coalesceTraversals };
             Bytecode.AddStep("coalesce", args);
             return Wrap< S , E2 >(this);
         }
@@ -218,8 +435,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the coin step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Coin (params object[] args)
+        public GraphTraversal< S , E > Coin (double probability)
         {
+            var args = new List<object> { probability };
             Bytecode.AddStep("coin", args);
             return Wrap< S , E >(this);
         }
@@ -227,8 +445,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the constant step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Constant<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Constant<E2> (object e)
         {
+            var args = new List<object> { e };
             Bytecode.AddStep("constant", args);
             return Wrap< S , E2 >(this);
         }
@@ -236,8 +455,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the count step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , long > Count (params object[] args)
+        public GraphTraversal< S , long > Count ()
         {
+            var args = new List<object> {  };
+            Bytecode.AddStep("count", args);
+            return Wrap< S , long >(this);
+        }
+
+        /// <summary>
+        ///     Adds the count step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , long > Count (Scope scope)
+        {
+            var args = new List<object> { scope };
             Bytecode.AddStep("count", args);
             return Wrap< S , long >(this);
         }
@@ -245,8 +475,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the cyclicPath step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > CyclicPath (params object[] args)
+        public GraphTraversal< S , E > CyclicPath ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("cyclicPath", args);
             return Wrap< S , E >(this);
         }
@@ -254,8 +485,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the dedup step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Dedup (params object[] args)
+        public GraphTraversal< S , E > Dedup (Scope scope, params string[] 
dedupLabels)
         {
+            var args = new List<object> { scope, dedupLabels };
+            Bytecode.AddStep("dedup", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the dedup step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Dedup (params string[] dedupLabels)
+        {
+            var args = new List<object> { dedupLabels };
             Bytecode.AddStep("dedup", args);
             return Wrap< S , E >(this);
         }
@@ -263,8 +505,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the drop step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Drop (params object[] args)
+        public GraphTraversal< S , E > Drop ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("drop", args);
             return Wrap< S , E >(this);
         }
@@ -272,8 +515,29 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the emit step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Emit (params object[] args)
+        public GraphTraversal< S , E > Emit (ITraversal emitTraversal)
+        {
+            var args = new List<object> { emitTraversal };
+            Bytecode.AddStep("emit", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the emit step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Emit ()
+        {
+            var args = new List<object> {  };
+            Bytecode.AddStep("emit", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the emit step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Emit (TraversalPredicate emitPredicate)
         {
+            var args = new List<object> { emitPredicate };
             Bytecode.AddStep("emit", args);
             return Wrap< S , E >(this);
         }
@@ -281,17 +545,39 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the filter step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Filter (params object[] args)
+        public GraphTraversal< S , E > Filter (ITraversal filterTraversal)
         {
+            var args = new List<object> { filterTraversal };
             Bytecode.AddStep("filter", args);
             return Wrap< S , E >(this);
         }
 
         /// <summary>
+        ///     Adds the filter step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Filter (TraversalPredicate predicate)
+        {
+            var args = new List<object> { predicate };
+            Bytecode.AddStep("filter", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the flatMap step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > FlatMap<E2> (ITraversal 
flatMapTraversal)
+        {
+            var args = new List<object> { flatMapTraversal };
+            Bytecode.AddStep("flatMap", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
         ///     Adds the flatMap step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > FlatMap<E2> (params object[] args)
+        public GraphTraversal< S , E2 > FlatMap<E2> (object function)
         {
+            var args = new List<object> { function };
             Bytecode.AddStep("flatMap", args);
             return Wrap< S , E2 >(this);
         }
@@ -299,17 +585,39 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the fold step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Fold<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Fold<E2> (object seed, object 
foldFunction)
         {
+            var args = new List<object> { seed, foldFunction };
             Bytecode.AddStep("fold", args);
             return Wrap< S , E2 >(this);
         }
 
         /// <summary>
+        ///     Adds the fold step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , IList<E> > Fold ()
+        {
+            var args = new List<object> {  };
+            Bytecode.AddStep("fold", args);
+            return Wrap< S , IList<E> >(this);
+        }
+
+        /// <summary>
         ///     Adds the from step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > From (params object[] args)
+        public GraphTraversal< S , E > From (ITraversal fromVertex)
         {
+            var args = new List<object> { fromVertex };
+            Bytecode.AddStep("from", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the from step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > From (string fromStepLabel)
+        {
+            var args = new List<object> { fromStepLabel };
             Bytecode.AddStep("from", args);
             return Wrap< S , E >(this);
         }
@@ -317,35 +625,149 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the group step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Group (params object[] args)
+        public GraphTraversal< S , E > Group (string sideEffectKey)
         {
+            var args = new List<object> { sideEffectKey };
             Bytecode.AddStep("group", args);
             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> ()
+        {
+            var args = new List<object> {  };
+            Bytecode.AddStep("group", args);
+            return Wrap< S , IDictionary<K, V> >(this);
+        }
+
+        /// <summary>
         ///     Adds the groupCount step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > GroupCount (params object[] args)
+        public GraphTraversal< S , E > GroupCount (string sideEffectKey)
         {
+            var args = new List<object> { sideEffectKey };
             Bytecode.AddStep("groupCount", args);
             return Wrap< S , E >(this);
         }
 
         /// <summary>
+        ///     Adds the groupCount step to this <see 
cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
+        public GraphTraversal< S , IDictionary<K, long> > GroupCount<K> ()
+        {
+            var args = new List<object> {  };
+            Bytecode.AddStep("groupCount", args);
+            return Wrap< S , IDictionary<K, long> >(this);
+        }
+
+        /// <summary>
         ///     Adds the groupV3d0 step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > GroupV3d0 (params object[] args)
+        public GraphTraversal< S , E > GroupV3d0 (string sideEffectKey)
         {
+            var args = new List<object> { sideEffectKey };
             Bytecode.AddStep("groupV3d0", args);
             return Wrap< S , E >(this);
         }
 
         /// <summary>
+        ///     Adds the groupV3d0 step to this <see 
cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
+        public GraphTraversal< S , IDictionary<K, V> > GroupV3d0<K, V> ()
+        {
+            var args = new List<object> {  };
+            Bytecode.AddStep("groupV3d0", args);
+            return Wrap< S , IDictionary<K, V> >(this);
+        }
+
+        /// <summary>
         ///     Adds the has step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Has (params object[] args)
+        public GraphTraversal< S , E > Has (string propertyKey, ITraversal 
propertyTraversal)
         {
+            var args = new List<object> { propertyKey, propertyTraversal };
+            Bytecode.AddStep("has", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the has step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Has (T accessor, ITraversal 
propertyTraversal)
+        {
+            var args = new List<object> { accessor, propertyTraversal };
+            Bytecode.AddStep("has", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the has step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Has (string label, string propertyKey, 
TraversalPredicate predicate)
+        {
+            var args = new List<object> { label, propertyKey, predicate };
+            Bytecode.AddStep("has", args);
+            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)
+        {
+            var args = new List<object> { propertyKey };
+            Bytecode.AddStep("has", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the has step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Has (T accessor, object value)
+        {
+            var args = new List<object> { accessor, value };
+            Bytecode.AddStep("has", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the has step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Has (string label, string propertyKey, 
object value)
+        {
+            var args = new List<object> { label, propertyKey, value };
+            Bytecode.AddStep("has", args);
+            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, object value)
+        {
+            var args = new List<object> { propertyKey, value };
+            Bytecode.AddStep("has", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the has step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Has (T accessor, TraversalPredicate 
predicate)
+        {
+            var args = new List<object> { accessor, predicate };
+            Bytecode.AddStep("has", args);
+            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, 
TraversalPredicate predicate)
+        {
+            var args = new List<object> { propertyKey, predicate };
             Bytecode.AddStep("has", args);
             return Wrap< S , E >(this);
         }
@@ -353,17 +775,39 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the hasId step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > HasId (params object[] args)
+        public GraphTraversal< S , E > HasId (object id, params object[] 
otherIds)
         {
+            var args = new List<object> { id, otherIds };
             Bytecode.AddStep("hasId", args);
             return Wrap< S , E >(this);
         }
 
         /// <summary>
+        ///     Adds the hasId step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > HasId (TraversalPredicate predicate)
+        {
+            var args = new List<object> { predicate };
+            Bytecode.AddStep("hasId", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the hasKey step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > HasKey (string label, params string[] 
otherLabels)
+        {
+            var args = new List<object> { label, otherLabels };
+            Bytecode.AddStep("hasKey", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
         ///     Adds the hasKey step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > HasKey (params object[] args)
+        public GraphTraversal< S , E > HasKey (TraversalPredicate predicate)
         {
+            var args = new List<object> { predicate };
             Bytecode.AddStep("hasKey", args);
             return Wrap< S , E >(this);
         }
@@ -371,8 +815,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the hasLabel step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > HasLabel (params object[] args)
+        public GraphTraversal< S , E > HasLabel (string label, params string[] 
otherLabels)
+        {
+            var args = new List<object> { label, otherLabels };
+            Bytecode.AddStep("hasLabel", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the hasLabel step to this <see 
cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > HasLabel (TraversalPredicate predicate)
         {
+            var args = new List<object> { predicate };
             Bytecode.AddStep("hasLabel", args);
             return Wrap< S , E >(this);
         }
@@ -380,8 +835,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the hasNot step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > HasNot (params object[] args)
+        public GraphTraversal< S , E > HasNot (string propertyKey)
         {
+            var args = new List<object> { propertyKey };
             Bytecode.AddStep("hasNot", args);
             return Wrap< S , E >(this);
         }
@@ -389,8 +845,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the hasValue step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > HasValue (params object[] args)
+        public GraphTraversal< S , E > HasValue (TraversalPredicate predicate)
+        {
+            var args = new List<object> { predicate };
+            Bytecode.AddStep("hasValue", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the hasValue step to this <see 
cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > HasValue (object value, params object[] 
otherValues)
         {
+            var args = new List<object> { value, otherValues };
             Bytecode.AddStep("hasValue", args);
             return Wrap< S , E >(this);
         }
@@ -398,8 +865,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the id step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , object > Id (params object[] args)
+        public GraphTraversal< S , object > Id ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("id", args);
             return Wrap< S , object >(this);
         }
@@ -407,8 +875,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the identity step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Identity (params object[] args)
+        public GraphTraversal< S , E > Identity ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("identity", args);
             return Wrap< S , E >(this);
         }
@@ -416,8 +885,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the in step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Vertex > In (params object[] args)
+        public GraphTraversal< S , Vertex > In (params string[] edgeLabels)
         {
+            var args = new List<object> { edgeLabels };
             Bytecode.AddStep("in", args);
             return Wrap< S , Vertex >(this);
         }
@@ -425,8 +895,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the inE step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Edge > InE (params object[] args)
+        public GraphTraversal< S , Edge > InE (params string[] edgeLabels)
         {
+            var args = new List<object> { edgeLabels };
             Bytecode.AddStep("inE", args);
             return Wrap< S , Edge >(this);
         }
@@ -434,8 +905,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the inV step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Vertex > InV (params object[] args)
+        public GraphTraversal< S , Vertex > InV ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("inV", args);
             return Wrap< S , Vertex >(this);
         }
@@ -443,8 +915,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the inject step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Inject (params object[] args)
+        public GraphTraversal< S , E > Inject (params object[] injections)
         {
+            var args = new List<object> { injections };
             Bytecode.AddStep("inject", args);
             return Wrap< S , E >(this);
         }
@@ -452,8 +925,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the is step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Is (params object[] args)
+        public GraphTraversal< S , E > Is (TraversalPredicate predicate)
+        {
+            var args = new List<object> { predicate };
+            Bytecode.AddStep("is", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the is step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Is (object value)
         {
+            var args = new List<object> { value };
             Bytecode.AddStep("is", args);
             return Wrap< S , E >(this);
         }
@@ -461,8 +945,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the key step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , string > Key (params object[] args)
+        public GraphTraversal< S , string > Key ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("key", args);
             return Wrap< S , string >(this);
         }
@@ -470,8 +955,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the label step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , string > Label (params object[] args)
+        public GraphTraversal< S , string > Label ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("label", args);
             return Wrap< S , string >(this);
         }
@@ -479,8 +965,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the limit step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Limit<E2> (params object[] args)
+        public GraphTraversal< S , E > Limit (long limit)
+        {
+            var args = new List<object> { limit };
+            Bytecode.AddStep("limit", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the limit step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Limit<E2> (Scope scope, long limit)
         {
+            var args = new List<object> { scope, limit };
             Bytecode.AddStep("limit", args);
             return Wrap< S , E2 >(this);
         }
@@ -488,8 +985,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the local step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Local<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Local<E2> (ITraversal localTraversal)
         {
+            var args = new List<object> { localTraversal };
             Bytecode.AddStep("local", args);
             return Wrap< S , E2 >(this);
         }
@@ -497,8 +995,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the loops step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , int > Loops (params object[] args)
+        public GraphTraversal< S , int > Loops ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("loops", args);
             return Wrap< S , int >(this);
         }
@@ -506,8 +1005,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the map step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Map<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Map<E2> (ITraversal mapTraversal)
+        {
+            var args = new List<object> { mapTraversal };
+            Bytecode.AddStep("map", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the map step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Map<E2> (object function)
         {
+            var args = new List<object> { function };
             Bytecode.AddStep("map", args);
             return Wrap< S , E2 >(this);
         }
@@ -515,8 +1025,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the mapKeys step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > MapKeys<E2> (params object[] args)
+        public GraphTraversal< S , E2 > MapKeys<E2> ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("mapKeys", args);
             return Wrap< S , E2 >(this);
         }
@@ -524,8 +1035,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the mapValues step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > MapValues<E2> (params object[] args)
+        public GraphTraversal< S , E2 > MapValues<E2> ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("mapValues", args);
             return Wrap< S , E2 >(this);
         }
@@ -533,8 +1045,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the match step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , IDictionary<string, E2> > Match<E2> (params 
object[] args)
+        public GraphTraversal< S , IDictionary<string, E2> > Match<E2> (params 
ITraversal[] matchTraversals)
         {
+            var args = new List<object> { matchTraversals };
             Bytecode.AddStep("match", args);
             return Wrap< S , IDictionary<string, E2> >(this);
         }
@@ -542,8 +1055,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the max step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Max<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Max<E2> (Scope scope)
+        {
+            var args = new List<object> { scope };
+            Bytecode.AddStep("max", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the max step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Max<E2> ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("max", args);
             return Wrap< S , E2 >(this);
         }
@@ -551,8 +1075,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the mean step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Mean<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Mean<E2> (Scope scope)
+        {
+            var args = new List<object> { scope };
+            Bytecode.AddStep("mean", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the mean step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Mean<E2> ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("mean", args);
             return Wrap< S , E2 >(this);
         }
@@ -560,8 +1095,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the min step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Min<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Min<E2> (Scope scope)
+        {
+            var args = new List<object> { scope };
+            Bytecode.AddStep("min", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the min step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Min<E2> ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("min", args);
             return Wrap< S , E2 >(this);
         }
@@ -569,8 +1115,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the not step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Not (params object[] args)
+        public GraphTraversal< S , E > Not (ITraversal notTraversal)
         {
+            var args = new List<object> { notTraversal };
             Bytecode.AddStep("not", args);
             return Wrap< S , E >(this);
         }
@@ -578,8 +1125,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the option step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Option (params object[] args)
+        public GraphTraversal< S , E > Option (object pickToken, ITraversal 
traversalOption)
+        {
+            var args = new List<object> { pickToken, traversalOption };
+            Bytecode.AddStep("option", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the option step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Option (ITraversal traversalOption)
         {
+            var args = new List<object> { traversalOption };
             Bytecode.AddStep("option", args);
             return Wrap< S , E >(this);
         }
@@ -587,8 +1145,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the optional step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Optional<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Optional<E2> (ITraversal 
optionalTraversal)
         {
+            var args = new List<object> { optionalTraversal };
             Bytecode.AddStep("optional", args);
             return Wrap< S , E2 >(this);
         }
@@ -596,8 +1155,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the or step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Or (params object[] args)
+        public GraphTraversal< S , E > Or (params ITraversal[] orTraversals)
         {
+            var args = new List<object> { orTraversals };
             Bytecode.AddStep("or", args);
             return Wrap< S , E >(this);
         }
@@ -605,8 +1165,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the order step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Order (params object[] args)
+        public GraphTraversal< S , E > Order (Scope scope)
+        {
+            var args = new List<object> { scope };
+            Bytecode.AddStep("order", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the order step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Order ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("order", args);
             return Wrap< S , E >(this);
         }
@@ -614,8 +1185,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the otherV step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Vertex > OtherV (params object[] args)
+        public GraphTraversal< S , Vertex > OtherV ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("otherV", args);
             return Wrap< S , Vertex >(this);
         }
@@ -623,8 +1195,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the out step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Vertex > Out (params object[] args)
+        public GraphTraversal< S , Vertex > Out (params string[] edgeLabels)
         {
+            var args = new List<object> { edgeLabels };
             Bytecode.AddStep("out", args);
             return Wrap< S , Vertex >(this);
         }
@@ -632,8 +1205,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the outE step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Edge > OutE (params object[] args)
+        public GraphTraversal< S , Edge > OutE (params string[] edgeLabels)
         {
+            var args = new List<object> { edgeLabels };
             Bytecode.AddStep("outE", args);
             return Wrap< S , Edge >(this);
         }
@@ -641,8 +1215,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the outV step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Vertex > OutV (params object[] args)
+        public GraphTraversal< S , Vertex > OutV ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("outV", args);
             return Wrap< S , Vertex >(this);
         }
@@ -650,8 +1225,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the pageRank step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > PageRank (params object[] args)
+        public GraphTraversal< S , E > PageRank (double alpha)
+        {
+            var args = new List<object> { alpha };
+            Bytecode.AddStep("pageRank", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the pageRank step to this <see 
cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > PageRank ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("pageRank", args);
             return Wrap< S , E >(this);
         }
@@ -659,8 +1245,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the path step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Path > Path (params object[] args)
+        public GraphTraversal< S , Path > Path ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("path", args);
             return Wrap< S , Path >(this);
         }
@@ -668,8 +1255,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the peerPressure step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > PeerPressure (params object[] args)
+        public GraphTraversal< S , E > PeerPressure ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("peerPressure", args);
             return Wrap< S , E >(this);
         }
@@ -677,8 +1265,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the profile step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Profile (params object[] args)
+        public GraphTraversal< S , E2 > Profile<E2> ()
+        {
+            var args = new List<object> {  };
+            Bytecode.AddStep("profile", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the profile step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Profile (string sideEffectKey)
         {
+            var args = new List<object> { sideEffectKey };
             Bytecode.AddStep("profile", args);
             return Wrap< S , E >(this);
         }
@@ -686,8 +1285,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the program step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Program (params object[] args)
+        public GraphTraversal< S , E > Program (object vertexProgram)
         {
+            var args = new List<object> { vertexProgram };
             Bytecode.AddStep("program", args);
             return Wrap< S , E >(this);
         }
@@ -695,8 +1295,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the project step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , IDictionary<string, E2> > Project<E2> 
(params object[] args)
+        public GraphTraversal< S , IDictionary<string, E2> > Project<E2> 
(string projectKey, params string[] otherProjectKeys)
         {
+            var args = new List<object> { projectKey, otherProjectKeys };
             Bytecode.AddStep("project", args);
             return Wrap< S , IDictionary<string, E2> >(this);
         }
@@ -704,8 +1305,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the properties step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Properties<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Properties<E2> (params string[] 
propertyKeys)
         {
+            var args = new List<object> { propertyKeys };
             Bytecode.AddStep("properties", args);
             return Wrap< S , E2 >(this);
         }
@@ -713,8 +1315,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the property step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Property (params object[] args)
+        public GraphTraversal< S , E > Property (object key, object value, 
params object[] keyValues)
+        {
+            var args = new List<object> { key, value, keyValues };
+            Bytecode.AddStep("property", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the property step to this <see 
cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Property (Cardinality cardinality, 
object key, object value, params object[] keyValues)
         {
+            var args = new List<object> { cardinality, key, value, keyValues };
             Bytecode.AddStep("property", args);
             return Wrap< S , E >(this);
         }
@@ -722,8 +1335,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the propertyMap step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , IDictionary<string, E2> > PropertyMap<E2> 
(params object[] args)
+        public GraphTraversal< S , IDictionary<string, E2> > PropertyMap<E2> 
(params string[] propertyKeys)
         {
+            var args = new List<object> { propertyKeys };
             Bytecode.AddStep("propertyMap", args);
             return Wrap< S , IDictionary<string, E2> >(this);
         }
@@ -731,17 +1345,29 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the range step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Range<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Range<E2> (Scope scope, long low, long 
high)
         {
+            var args = new List<object> { scope, low, high };
             Bytecode.AddStep("range", args);
             return Wrap< S , E2 >(this);
         }
 
         /// <summary>
+        ///     Adds the range step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Range (long low, long high)
+        {
+            var args = new List<object> { low, high };
+            Bytecode.AddStep("range", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
         ///     Adds the repeat step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Repeat (params object[] args)
+        public GraphTraversal< S , E > Repeat (ITraversal repeatTraversal)
         {
+            var args = new List<object> { repeatTraversal };
             Bytecode.AddStep("repeat", args);
             return Wrap< S , E >(this);
         }
@@ -749,8 +1375,29 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the sack step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Sack (params object[] args)
+        public GraphTraversal< S , E2 > Sack<E2> ()
+        {
+            var args = new List<object> {  };
+            Bytecode.AddStep("sack", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the sack step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Sack (object sackOperator)
+        {
+            var args = new List<object> { sackOperator };
+            Bytecode.AddStep("sack", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the sack step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Sack (object sackOperator, string 
elementPropertyKey)
         {
+            var args = new List<object> { sackOperator, elementPropertyKey };
             Bytecode.AddStep("sack", args);
             return Wrap< S , E >(this);
         }
@@ -758,8 +1405,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the sample step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Sample (params object[] args)
+        public GraphTraversal< S , E > Sample (int amountToSample)
+        {
+            var args = new List<object> { amountToSample };
+            Bytecode.AddStep("sample", args);
+            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)
         {
+            var args = new List<object> { scope, amountToSample };
             Bytecode.AddStep("sample", args);
             return Wrap< S , E >(this);
         }
@@ -767,8 +1425,49 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the select step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , IDictionary<string, E2> > Select<E2> 
(params object[] args)
+        public GraphTraversal< S , ICollection<E2> > Select<E2> (Column column)
+        {
+            var args = new List<object> { column };
+            Bytecode.AddStep("select", args);
+            return Wrap< S , ICollection<E2> >(this);
+        }
+
+        /// <summary>
+        ///     Adds the select step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Select<E2> (string selectKey)
+        {
+            var args = new List<object> { selectKey };
+            Bytecode.AddStep("select", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the select step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Select<E2> (Pop pop, string selectKey)
+        {
+            var args = new List<object> { pop, selectKey };
+            Bytecode.AddStep("select", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the select step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , IDictionary<string, E2> > Select<E2> (Pop 
pop, string selectKey1, string selectKey2, params string[] otherSelectKeys)
+        {
+            var args = new List<object> { pop, selectKey1, selectKey2, 
otherSelectKeys };
+            Bytecode.AddStep("select", args);
+            return Wrap< S , IDictionary<string, E2> >(this);
+        }
+
+        /// <summary>
+        ///     Adds the select step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , IDictionary<string, E2> > Select<E2> 
(string selectKey1, string selectKey2, params string[] otherSelectKeys)
         {
+            var args = new List<object> { selectKey1, selectKey2, 
otherSelectKeys };
             Bytecode.AddStep("select", args);
             return Wrap< S , IDictionary<string, E2> >(this);
         }
@@ -776,8 +1475,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the sideEffect step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > SideEffect (params object[] args)
+        public GraphTraversal< S , E > SideEffect (ITraversal 
sideEffectTraversal)
         {
+            var args = new List<object> { sideEffectTraversal };
+            Bytecode.AddStep("sideEffect", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the sideEffect step to this <see 
cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > SideEffect (object consumer)
+        {
+            var args = new List<object> { consumer };
             Bytecode.AddStep("sideEffect", args);
             return Wrap< S , E >(this);
         }
@@ -785,8 +1495,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the simplePath step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > SimplePath (params object[] args)
+        public GraphTraversal< S , E > SimplePath ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("simplePath", args);
             return Wrap< S , E >(this);
         }
@@ -794,8 +1505,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the store step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Store (params object[] args)
+        public GraphTraversal< S , E > Store (string sideEffectKey)
         {
+            var args = new List<object> { sideEffectKey };
             Bytecode.AddStep("store", args);
             return Wrap< S , E >(this);
         }
@@ -803,8 +1515,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the subgraph step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , Edge > Subgraph (params object[] args)
+        public GraphTraversal< S , Edge > Subgraph (string sideEffectKey)
         {
+            var args = new List<object> { sideEffectKey };
             Bytecode.AddStep("subgraph", args);
             return Wrap< S , Edge >(this);
         }
@@ -812,8 +1525,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the sum step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Sum<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Sum<E2> ()
+        {
+            var args = new List<object> {  };
+            Bytecode.AddStep("sum", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the sum step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Sum<E2> (Scope scope)
         {
+            var args = new List<object> { scope };
             Bytecode.AddStep("sum", args);
             return Wrap< S , E2 >(this);
         }
@@ -821,8 +1545,39 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the tail step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Tail<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Tail<E2> (Scope scope, long limit)
+        {
+            var args = new List<object> { scope, limit };
+            Bytecode.AddStep("tail", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
+        ///     Adds the tail step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Tail ()
+        {
+            var args = new List<object> {  };
+            Bytecode.AddStep("tail", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the tail step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Tail (long limit)
         {
+            var args = new List<object> { limit };
+            Bytecode.AddStep("tail", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the tail step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Tail<E2> (Scope scope)
+        {
+            var args = new List<object> { scope };
             Bytecode.AddStep("tail", args);
             return Wrap< S , E2 >(this);
         }
@@ -830,8 +1585,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the timeLimit step to this <see 
cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > TimeLimit (params object[] args)
+        public GraphTraversal< S , E > TimeLimit (long timeLimit)
         {
+            var args = new List<object> { timeLimit };
             Bytecode.AddStep("timeLimit", args);
             return Wrap< S , E >(this);
         }
@@ -839,8 +1595,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the times step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Times (params object[] args)
+        public GraphTraversal< S , E > Times (int maxLoops)
         {
+            var args = new List<object> { maxLoops };
             Bytecode.AddStep("times", args);
             return Wrap< S , E >(this);
         }
@@ -848,8 +1605,29 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the to step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Vertex > To (params object[] args)
+        public GraphTraversal< S , E > To (ITraversal toVertex)
+        {
+            var args = new List<object> { toVertex };
+            Bytecode.AddStep("to", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the to step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > To (string toStepLabel)
         {
+            var args = new List<object> { toStepLabel };
+            Bytecode.AddStep("to", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the to step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , Vertex > To (Direction direction, params 
string[] edgeLabels)
+        {
+            var args = new List<object> { direction, edgeLabels };
             Bytecode.AddStep("to", args);
             return Wrap< S , Vertex >(this);
         }
@@ -857,8 +1635,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the toE step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Edge > ToE (params object[] args)
+        public GraphTraversal< S , Edge > ToE (Direction direction, params 
string[] edgeLabels)
         {
+            var args = new List<object> { direction, edgeLabels };
             Bytecode.AddStep("toE", args);
             return Wrap< S , Edge >(this);
         }
@@ -866,8 +1645,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the toV step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , Vertex > ToV (params object[] args)
+        public GraphTraversal< S , Vertex > ToV (Direction direction)
         {
+            var args = new List<object> { direction };
             Bytecode.AddStep("toV", args);
             return Wrap< S , Vertex >(this);
         }
@@ -875,17 +1655,29 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the tree step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Tree (params object[] args)
+        public GraphTraversal< S , E > Tree (string sideEffectKey)
         {
+            var args = new List<object> { sideEffectKey };
             Bytecode.AddStep("tree", args);
             return Wrap< S , E >(this);
         }
 
         /// <summary>
+        ///     Adds the tree step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Tree<E2> ()
+        {
+            var args = new List<object> {  };
+            Bytecode.AddStep("tree", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
         ///     Adds the unfold step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Unfold<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Unfold<E2> ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("unfold", args);
             return Wrap< S , E2 >(this);
         }
@@ -893,8 +1685,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the union step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Union<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Union<E2> (params ITraversal[] 
unionTraversals)
         {
+            var args = new List<object> { unionTraversals };
             Bytecode.AddStep("union", args);
             return Wrap< S , E2 >(this);
         }
@@ -902,8 +1695,19 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the until step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Until (params object[] args)
+        public GraphTraversal< S , E > Until (ITraversal untilTraversal)
         {
+            var args = new List<object> { untilTraversal };
+            Bytecode.AddStep("until", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the until step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Until (TraversalPredicate 
untilPredicate)
+        {
+            var args = new List<object> { untilPredicate };
             Bytecode.AddStep("until", args);
             return Wrap< S , E >(this);
         }
@@ -911,8 +1715,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the value step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Value<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Value<E2> ()
         {
+            var args = new List<object> {  };
             Bytecode.AddStep("value", args);
             return Wrap< S , E2 >(this);
         }
@@ -920,8 +1725,19 @@ 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 object[] args)
+        public GraphTraversal< S , IDictionary<string, E2> > ValueMap<E2> 
(params string[] propertyKeys)
+        {
+            var args = new List<object> { propertyKeys };
+            Bytecode.AddStep("valueMap", args);
+            return Wrap< S , IDictionary<string, E2> >(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)
         {
+            var args = new List<object> { includeTokens, propertyKeys };
             Bytecode.AddStep("valueMap", args);
             return Wrap< S , IDictionary<string, E2> >(this);
         }
@@ -929,8 +1745,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the values step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E2 > Values<E2> (params object[] args)
+        public GraphTraversal< S , E2 > Values<E2> (params string[] 
propertyKeys)
         {
+            var args = new List<object> { propertyKeys };
             Bytecode.AddStep("values", args);
             return Wrap< S , E2 >(this);
         }
@@ -938,8 +1755,29 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the where step to this <see cref="GraphTraversal{SType, 
EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Where (params object[] args)
+        public GraphTraversal< S , E > Where (TraversalPredicate predicate)
+        {
+            var args = new List<object> { predicate };
+            Bytecode.AddStep("where", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the where step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Where (string startKey, 
TraversalPredicate predicate)
+        {
+            var args = new List<object> { startKey, predicate };
+            Bytecode.AddStep("where", args);
+            return Wrap< S , E >(this);
+        }
+
+        /// <summary>
+        ///     Adds the where step to this <see cref="GraphTraversal{SType, 
EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E > Where (ITraversal whereTraversal)
         {
+            var args = new List<object> { whereTraversal };
             Bytecode.AddStep("where", args);
             return Wrap< S , E >(this);
         }

Reply via email to