/// <summary>
        /// Adds the "addV()" step to the traversal, creating a new vertex in the graph.
        /// </summary>
        /// <typeparam name="TVertex">The type of the vertex.</typeparam>
        /// <param name="traversal">The graph traversal.</param>
        /// <param name="vertex">The vertex to add.</param>
        /// <param name="serializationSettings">The serialization settings.</param>
        /// <returns>Returns the resulting traversal</returns>
        public static ISchemaBoundTraversal <object, TVertex> AddV <TVertex>(this ITraversal traversal, TVertex vertex, JsonSerializerSettings serializationSettings)
            where TVertex : IVertex
        {
            var label = LabelNameResolver.GetLabelName(typeof(TVertex));
            var t     = traversal.AsGraphTraversal().AddV(label);

            t = TraversalHelper.AddObjectProperties(t, vertex, serializationSettings);

            return(t.AsSchemaBound <object, TVertex>());
        }
        /// <summary>
        /// Adds the "addV()" step to the traversal, creating a new vertex in the graph.
        /// </summary>
        /// <typeparam name="TEdge">The type of the edge.</typeparam>
        /// <param name="traversal">The graph traversal.</param>
        /// <param name="edge">The edge to add.</param>
        /// <param name="serializationSettings">The serialization settings.</param>
        /// <returns>Returns the resulting traversal</returns>
        public static ISchemaBoundTraversal <object, TEdge> AddE <TEdge>(this ITraversal traversal, TEdge edge, JsonSerializerSettings serializationSettings)
            where TEdge : IEdge
        {
            var label = LabelNameResolver.GetLabelName(typeof(TEdge));
            var t     = traversal.AsGraphTraversal().AddE(label);

            t = TraversalHelper.AddObjectProperties(t, edge, serializationSettings);

            return(t.AsSchemaBound <object, TEdge>());
        }
        /// <summary>
        /// Adds the "addV()" step to the traversal, creating a new vertex in the graph.
        /// </summary>
        /// <typeparam name="TVertex">The type of the vertex.</typeparam>
        /// <param name="graphTraversalSource">The graph traversal source.</param>
        /// <param name="vertex">The vertex to add.</param>
        /// <param name="serializationSettings">The serialization settings.</param>
        /// <returns>Returns the resulting traversal</returns>
        public static ISchemaBoundTraversal <object, TVertex> AddV <TVertex>(this IGraphTraversalSource graphTraversalSource, TVertex vertex, JsonSerializerSettings serializationSettings)
            where TVertex : VertexBase
        {
            var label     = LabelNameResolver.GetLabelName(typeof(TVertex));
            var traversal = graphTraversalSource.AddV(label);

            traversal = TraversalHelper.AddObjectProperties(traversal, vertex, serializationSettings);

            return(traversal.AsSchemaBound <object, TVertex>());
        }