@Override
    public void configure(final Object... keyValues) {
        if (keyValues[0] == T.label) userProvidedLabel = true;

        if (keyValues[0] == T.label && this.parameters.contains(T.label)) {
            if (this.parameters.contains(T.label, Vertex.DEFAULT_LABEL)) {
                this.parameters.remove(T.label);
                this.parameters.set(this, keyValues);
            } else {
                throw new IllegalArgumentException(String.format("Vertex T.label has already been set to [%s] and cannot be overridden with [%s]",
                        this.parameters.getRaw().get(T.label).get(0), keyValues[1]));
            }
        } else if (keyValues[0] == T.id && this.parameters.contains(T.id)) {
            throw new IllegalArgumentException(String.format("Vertex T.id has already been set to [%s] and cannot be overridden with [%s]",
                    this.parameters.getRaw().get(T.id).get(0), keyValues[1]));
        } else {
            this.parameters.set(this, keyValues);
        }
    }
@author Marko A. Rodriguez (http://markorodriguez.com)
@author Stephen Mallette (http://stephen.genoprime.com)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java