public <S> GraphTraversal<S, Vertex> mergeV(final Traversal<?, Map<Object, Object>> searchCreate) {
        final GraphTraversalSource clone = this.clone();
        clone.gremlinLang.addStep(GraphTraversal.Symbols.mergeV, searchCreate);
        final GraphTraversal.Admin<S, Vertex> traversal = new DefaultGraphTraversal<>(clone);

        final MergeVertexStep<S> step = null == searchCreate ? new MergeVertexStep(traversal, true, (Map) null) :
                new MergeVertexStep(traversal, true, searchCreate.asAdmin());

        return traversal.addStep(step);
    }
Spawns a {@link GraphTraversal} by doing a merge (i.e. upsert) style operation for an {@link Vertex} using a
{@code Map} as an argument. The {@code Map} represents search criteria and will match each of the supplied
key/value pairs where the keys may be {@code String} property values or a value of {@link T}. If a match is not
made it will use that search criteria to create the new {@link Vertex}.

@param searchCreate This anonymous {@link Traversal} must produce a {@code Map} that may have a keys of
{@link T} or a {@code String}.
@since 3.6.0
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java