Github user jorgebay commented on the issue: https://github.com/apache/tinkerpop/pull/792 The implementation looks great and the final `GraphTraversal` and `GraphTraversalSource` APIs make a lot of sense, like: ```csharp public GraphTraversal<S, E2> Branch<E2> (IFunction function) {} ``` This enables us that if we wanted to in the future, we could implement a lambda in C# that takes a `Func<T, TResult>`, like: ```csharp IFunction fn = Lambda.GetFunction<string, int>(text => text.length) int traversal.Branch(fn).Next(); ``` Just 1 suggestion: Can we make `Lambda` class `static` and make the `Lambda.Groovy()` and `Lambda.Python()` return an `ILambda` interface? ```csharp public interface ILambda : IFunction, IBiFunction, IPredicate, IUnaryOperator, IBinaryOperator, IComparator, IConsumer, ISupplier ``` ```csharp // Make the implementation internal internal class StringBasedLambda: ILambda { public string LambdaExpression { get; } public string Language { get; } public object Arguments { get; } public Lambda(string expression, string language) { // ... } } ``` Then, the serializers could take an `ILambda`: `{typeof(ILambda), new LambdaSerializer()}`
---