This is an automated email from the ASF dual-hosted git repository.

colegreer pushed a commit to branch TINKERPOP-3193
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit f04a2a7844cf76aaed552459dc74d7e185c679b0
Author: Cole-Greer <[email protected]>
AuthorDate: Mon Sep 22 13:23:20 2025 -0700

    Isolate internal state management from Configuring/Parameterizing
    
    Updates AddVertexStep, AddVertexStartStep, AddEdgeStep, AddEdgeStartStep, 
and AddPropertyStep
    to isolate internal state management (used for id, label, properties, 
from/to...) from the
    Paramenters object used by Configuring and Parameters interfaces. These 
interfaces are now
    exclusively used for the purposes of with() modulation. All other existing 
usages of Parameters
    in Configuring steps is exclusively related to with() modulation.
---
 .../traversal/step/map/AddEdgeStartStep.java       | 63 ++++++++++++----------
 .../process/traversal/step/map/AddEdgeStep.java    | 63 ++++++++++++----------
 .../traversal/step/map/AddVertexStartStep.java     | 63 ++++++++++++----------
 .../process/traversal/step/map/AddVertexStep.java  | 63 ++++++++++++----------
 .../traversal/step/sideEffect/AddPropertyStep.java | 45 +++++++++-------
 .../traversal/step/map/AddVertexStepTest.java      |  8 +--
 6 files changed, 169 insertions(+), 136 deletions(-)

diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStep.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStep.java
index 2fe2827659..76f67e7d7d 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStep.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStep.java
@@ -55,58 +55,63 @@ public class AddEdgeStartStep extends AbstractStep<Edge, 
Edge>
     private static final String TO = Graph.Hidden.hide("to");
 
     private boolean first = true;
-    private Parameters parameters = new Parameters();
+    private Parameters internalParameters = new Parameters();
+    private Parameters withConfiguration = new Parameters();
     private CallbackRegistry<Event.EdgeAddedEvent> callbackRegistry;
 
     public AddEdgeStartStep(final Traversal.Admin traversal, final String 
edgeLabel) {
         super(traversal);
-        this.parameters.set(this, T.label, edgeLabel);
+        this.internalParameters.set(this, T.label, edgeLabel);
     }
 
     public AddEdgeStartStep(final Traversal.Admin traversal, final 
Traversal<?, String> edgeLabelTraversal) {
         super(traversal);
-        this.parameters.set(this, T.label, edgeLabelTraversal);
+        this.internalParameters.set(this, T.label, edgeLabelTraversal);
     }
 
     @Override
     public <S, E> List<Traversal.Admin<S, E>> getLocalChildren() {
-        return this.parameters.getTraversals();
+        return this.internalParameters.getTraversals();
     }
 
     @Override
     public Parameters getParameters() {
-        return this.parameters;
+        return this.withConfiguration;
     }
 
     @Override
     public Set<String> getScopeKeys() {
-        return this.parameters.getReferencedLabels();
+        return this.internalParameters.getReferencedLabels();
     }
 
     @Override
     public void configure(final Object... keyValues) {
-        this.parameters.set(this, keyValues);
+        this.withConfiguration.set(this, keyValues);
+    }
+
+    private void configureInternalParams(final Object... keyValues) {
+        this.internalParameters.set(this, keyValues);
     }
 
     @Override
     public void addTo(final Traversal.Admin<?, ?> toObject) {
-        this.parameters.set(this, TO, toObject);
+        this.internalParameters.set(this, TO, toObject);
     }
 
     @Override
     public void addFrom(final Traversal.Admin<?, ?> fromObject) {
-        this.parameters.set(this, FROM, fromObject);
+        this.internalParameters.set(this, FROM, fromObject);
     }
 
     @Override
     public Object getElementId() {
-        List<Object> ids = this.parameters.get(T.id, null);
+        List<Object> ids = this.internalParameters.get(T.id, null);
         return ids.isEmpty() ? null : ids.get(0);
     }
 
     @Override
     public void setElementId(Object elementId) {
-        configure(T.id, elementId);
+        configureInternalParams(T.id, elementId);
     }
 
     @Override
@@ -118,10 +123,10 @@ public class AddEdgeStartStep extends AbstractStep<Edge, 
Edge>
             // a dead traverser to trigger the traversal
             final Traverser.Admin traverser = generator.generate(1, (Step) 
this, 1);
 
-            final String edgeLabel = (String) this.parameters.get(traverser, 
T.label, () -> Edge.DEFAULT_LABEL).get(0);
+            final String edgeLabel = (String) 
this.internalParameters.get(traverser, T.label, () -> 
Edge.DEFAULT_LABEL).get(0);
 
             // FROM/TO must be set and must be vertices
-            Object theTo = this.parameters.get(traverser, TO, () -> 
null).get(0);
+            Object theTo = this.internalParameters.get(traverser, TO, () -> 
null).get(0);
             if (theTo != null && !(theTo instanceof Vertex)) {
                 theTo = new ReferenceVertex(theTo);
             }
@@ -130,7 +135,7 @@ public class AddEdgeStartStep extends AbstractStep<Edge, 
Edge>
                 throw new IllegalStateException(String.format(
                         "The value given to addE(%s).to() must resolve to a 
Vertex or the ID of a Vertex present in the graph, but null was specified 
instead", edgeLabel));
 
-            Object theFrom = this.parameters.get(traverser, FROM, () -> 
null).get(0);
+            Object theFrom = this.internalParameters.get(traverser, FROM, () 
-> null).get(0);
             if (theFrom != null && !(theFrom instanceof Vertex)) {
                 theFrom = new ReferenceVertex(theFrom);
             }
@@ -161,7 +166,7 @@ public class AddEdgeStartStep extends AbstractStep<Edge, 
Edge>
                         "The value given to addE(%s).from() must resolve to a 
Vertex or the ID of a Vertex present in the graph. The provided value does not 
match any vertices in the graph", edgeLabel));
             }
 
-            final Edge edge = fromVertex.addEdge(edgeLabel, toVertex, 
this.parameters.getKeyValues(traverser, TO, FROM, T.label));
+            final Edge edge = fromVertex.addEdge(edgeLabel, toVertex, 
this.internalParameters.getKeyValues(traverser, TO, FROM, T.label));
             EventUtil.registerEdgeCreation(callbackRegistry, getTraversal(), 
edge);
             return generator.generate(edge, this, 1L);
         } else
@@ -178,30 +183,32 @@ public class AddEdgeStartStep extends AbstractStep<Edge, 
Edge>
 
     @Override
     public int hashCode() {
-        return super.hashCode() ^ this.parameters.hashCode();
+        return super.hashCode() ^ this.internalParameters.hashCode() ^ 
this.withConfiguration.hashCode();
     }
 
     @Override
     public String toString() {
-        return StringFactory.stepString(this, this.parameters.toString());
+        return StringFactory.stepString(this, 
this.internalParameters.toString());
     }
 
     @Override
     public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
         super.setTraversal(parentTraversal);
-        this.parameters.getTraversals().forEach(this::integrateChild);
+        this.internalParameters.getTraversals().forEach(this::integrateChild);
+        this.withConfiguration.getTraversals().forEach(this::integrateChild);
     }
 
     @Override
     public AddEdgeStartStep clone() {
         final AddEdgeStartStep clone = (AddEdgeStartStep) super.clone();
-        clone.parameters = this.parameters.clone();
+        clone.internalParameters = this.internalParameters.clone();
+        clone.withConfiguration = this.withConfiguration.clone();
         return clone;
     }
 
     @Override
     public Object getLabel() {
-        Object label = parameters.get(T.label, () -> 
Edge.DEFAULT_LABEL).get(0);
+        Object label = internalParameters.get(T.label, () -> 
Edge.DEFAULT_LABEL).get(0);
         if (label instanceof ConstantTraversal) {
             return ((ConstantTraversal<?, ?>) label).next();
         }
@@ -210,23 +217,23 @@ public class AddEdgeStartStep extends AbstractStep<Edge, 
Edge>
 
     @Override
     public Object getFrom() {
-        return getAdjacentVertex(this.parameters, FROM);
+        return getAdjacentVertex(this.internalParameters, FROM);
     }
 
     @Override
     public Object getTo() {
-        return getAdjacentVertex(this.parameters, TO);
+        return getAdjacentVertex(this.internalParameters, TO);
     }
     
     @Override
     public Map<Object, List<Object>> getProperties() {
-        return Collections.unmodifiableMap(parameters.getRaw());
+        return Collections.unmodifiableMap(internalParameters.getRaw());
     }
 
     @Override
     public boolean removeProperty(Object k) {
-        if (parameters.contains(k)) {
-            parameters.remove(k);
+        if (internalParameters.contains(k)) {
+            internalParameters.remove(k);
             return true;
         }
         return false;
@@ -234,8 +241,8 @@ public class AddEdgeStartStep extends AbstractStep<Edge, 
Edge>
 
     @Override
     public boolean removeElementId() {
-        if (this.parameters.contains(T.id)) {
-            this.parameters.remove(T.id);
+        if (this.internalParameters.contains(T.id)) {
+            this.internalParameters.remove(T.id);
             return true;
         }
         return false;
@@ -243,6 +250,6 @@ public class AddEdgeStartStep extends AbstractStep<Edge, 
Edge>
 
     @Override
     public void addProperty(final Object key, final Object value) {
-        configure(key, value);
+        configureInternalParams(key, value);
     }
 }
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
index 77d6dfcffa..d7c495f216 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
@@ -50,66 +50,71 @@ public class AddEdgeStep<S> extends ScalarMapStep<S, Edge>
     private static final String FROM = Graph.Hidden.hide("from");
     private static final String TO = Graph.Hidden.hide("to");
 
-    private Parameters parameters = new Parameters();
+    private Parameters internalParameters = new Parameters();
+    private Parameters withConfiguration = new Parameters();
     private CallbackRegistry<Event.EdgeAddedEvent> callbackRegistry;
 
     public AddEdgeStep(final Traversal.Admin traversal, final String 
edgeLabel) {
         super(traversal);
-        this.parameters.set(this, T.label, edgeLabel);
+        this.internalParameters.set(this, T.label, edgeLabel);
     }
 
     public AddEdgeStep(final Traversal.Admin traversal, final 
Traversal.Admin<S,String> edgeLabelTraversal) {
         super(traversal);
-        this.parameters.set(this, T.label, edgeLabelTraversal);
+        this.internalParameters.set(this, T.label, edgeLabelTraversal);
     }
 
     @Override
     public <S, E> List<Traversal.Admin<S, E>> getLocalChildren() {
-        return this.parameters.getTraversals();
+        return this.internalParameters.getTraversals();
     }
 
     @Override
     public Parameters getParameters() {
-        return this.parameters;
+        return this.withConfiguration;
     }
 
     @Override
     public Set<String> getScopeKeys() {
-        return this.parameters.getReferencedLabels();
+        return this.internalParameters.getReferencedLabels();
     }
 
     @Override
     public void configure(final Object... keyValues) {
-        this.parameters.set(this, keyValues);
+        this.withConfiguration.set(this, keyValues);
+    }
+
+    private void configureInternalParams(final Object... keyValues) {
+        this.internalParameters.set(this, keyValues);
     }
 
     @Override
     public void addTo(final Traversal.Admin<?, ?> toObject) {
-        this.parameters.set(this, TO, toObject);
+        this.internalParameters.set(this, TO, toObject);
     }
 
     @Override
     public void addFrom(final Traversal.Admin<?, ?> fromObject) {
-        this.parameters.set(this, FROM, fromObject);
+        this.internalParameters.set(this, FROM, fromObject);
     }
 
     @Override
     public Object getElementId() {
-        List<Object> ids = this.parameters.get(T.id, null);
+        List<Object> ids = this.internalParameters.get(T.id, null);
         return ids.isEmpty() ? null : ids.get(0);
     }
 
     @Override
     public void setElementId(Object elementId) {
-        configure(T.id, elementId);
+        configureInternalParams(T.id, elementId);
     }
 
     @Override
     protected Edge map(final Traverser.Admin<S> traverser) {
-        final String edgeLabel = this.parameters.get(traverser, T.label, () -> 
Edge.DEFAULT_LABEL).get(0);
+        final String edgeLabel = this.internalParameters.get(traverser, 
T.label, () -> Edge.DEFAULT_LABEL).get(0);
 
-        Vertex toVertex = getAdjacentVertex(this.parameters, TO, traverser, 
edgeLabel);
-        Vertex fromVertex = getAdjacentVertex(this.parameters, FROM, 
traverser, edgeLabel);
+        Vertex toVertex = getAdjacentVertex(this.internalParameters, TO, 
traverser, edgeLabel);
+        Vertex fromVertex = getAdjacentVertex(this.internalParameters, FROM, 
traverser, edgeLabel);
 
         try {
             if (toVertex instanceof Attachable)
@@ -131,8 +136,7 @@ public class AddEdgeStep<S> extends ScalarMapStep<S, Edge>
                     "The value given to addE(%s).from() must resolve to a 
Vertex or the ID of a Vertex present in the graph. The provided value does not 
match any vertices in the graph", edgeLabel));
         }
 
-
-        final Edge edge = fromVertex.addEdge(edgeLabel, toVertex, 
this.parameters.getKeyValues(traverser, TO, FROM, T.label));
+        final Edge edge = fromVertex.addEdge(edgeLabel, toVertex, 
this.internalParameters.getKeyValues(traverser, TO, FROM, T.label));
         EventUtil.registerEdgeCreation(callbackRegistry, getTraversal(), edge);
         return edge;
     }
@@ -150,30 +154,31 @@ public class AddEdgeStep<S> extends ScalarMapStep<S, Edge>
 
     @Override
     public int hashCode() {
-        return super.hashCode() ^ this.parameters.hashCode();
+        return super.hashCode() ^ this.internalParameters.hashCode() ^ 
this.withConfiguration.hashCode();
     }
 
     @Override
     public String toString() {
-        return StringFactory.stepString(this, this.parameters.toString());
+        return StringFactory.stepString(this, 
this.internalParameters.toString());
     }
 
     @Override
     public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
         super.setTraversal(parentTraversal);
-        this.parameters.getTraversals().forEach(this::integrateChild);
+        this.internalParameters.getTraversals().forEach(this::integrateChild);
     }
 
     @Override
     public AddEdgeStep<S> clone() {
         final AddEdgeStep<S> clone = (AddEdgeStep<S>) super.clone();
-        clone.parameters = this.parameters.clone();
+        clone.internalParameters = this.internalParameters.clone();
+        clone.withConfiguration = this.withConfiguration.clone();
         return clone;
     }
 
     @Override
     public Object getLabel() {
-        Object label = parameters.get(T.label, () -> 
Edge.DEFAULT_LABEL).get(0);
+        Object label = internalParameters.get(T.label, () -> 
Edge.DEFAULT_LABEL).get(0);
         if (label instanceof ConstantTraversal) {
             return ((ConstantTraversal<?, ?>) label).next();
         }
@@ -182,18 +187,18 @@ public class AddEdgeStep<S> extends ScalarMapStep<S, Edge>
 
     @Override
     public void addProperty(Object key, Object value) {
-        configure(key, value);
+        configureInternalParams(key, value);
     }
 
     @Override
     public Map<Object, List<Object>> getProperties() {
-        return Collections.unmodifiableMap(parameters.getRaw(T.label, TO, 
FROM));
+        return Collections.unmodifiableMap(internalParameters.getRaw(T.label, 
TO, FROM));
     }
 
     @Override
     public boolean removeProperty(Object k) {
-        if (parameters.contains(k)) {
-            parameters.remove(k);
+        if (internalParameters.contains(k)) {
+            internalParameters.remove(k);
             return true;
         }
         return false;
@@ -201,8 +206,8 @@ public class AddEdgeStep<S> extends ScalarMapStep<S, Edge>
 
     @Override
     public boolean removeElementId() {
-        if (this.parameters.contains(T.id)) {
-            this.parameters.remove(T.id);
+        if (this.internalParameters.contains(T.id)) {
+            this.internalParameters.remove(T.id);
             return true;
         }
         return false;
@@ -210,11 +215,11 @@ public class AddEdgeStep<S> extends ScalarMapStep<S, Edge>
 
     @Override
     public Object getFrom() {
-        return getAdjacentVertex(this.parameters, FROM);
+        return getAdjacentVertex(this.internalParameters, FROM);
     }
 
     @Override
     public Object getTo() {
-        return getAdjacentVertex(this.parameters, TO);
+        return getAdjacentVertex(this.internalParameters, TO);
     }
 }
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
index fd91c769af..db50f0c1e2 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
@@ -49,20 +49,21 @@ import 
org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 public class AddVertexStartStep extends AbstractStep<Vertex, Vertex>
         implements TraversalParent, Scoping, AddVertexStepContract<Vertex>, 
Configuring {
 
-    private Parameters parameters = new Parameters();
+    private Parameters internalParameters = new Parameters();
+    private Parameters withConfiguration = new Parameters();
     private boolean first = true;
     private CallbackRegistry<Event.VertexAddedEvent> callbackRegistry;
     private boolean userProvidedLabel;
 
     public AddVertexStartStep(final Traversal.Admin traversal, final String 
label) {
         super(traversal);
-        this.parameters.set(this, T.label, null == label ? 
Vertex.DEFAULT_LABEL : label);
+        this.internalParameters.set(this, T.label, null == label ? 
Vertex.DEFAULT_LABEL : label);
         userProvidedLabel = label != null;
     }
 
     public AddVertexStartStep(final Traversal.Admin traversal, final 
Traversal<?, String> vertexLabelTraversal) {
         super(traversal);
-        this.parameters.set(this, T.label, null == vertexLabelTraversal ? 
Vertex.DEFAULT_LABEL : vertexLabelTraversal);
+        this.internalParameters.set(this, T.label, null == 
vertexLabelTraversal ? Vertex.DEFAULT_LABEL : vertexLabelTraversal);
         userProvidedLabel = vertexLabelTraversal != null;
     }
 
@@ -73,45 +74,49 @@ public class AddVertexStartStep extends 
AbstractStep<Vertex, Vertex>
 
     @Override
     public Object getElementId() {
-        List<Object> ids = this.parameters.get(T.id, null);
+        List<Object> ids = this.internalParameters.get(T.id, null);
         return ids.isEmpty() ? null : ids.get(0);
     }
 
     @Override
     public void setElementId(Object elementId) {
-        configure(T.id, elementId);
+        configureInternalParams(T.id, elementId);
     }
 
     @Override
     public Parameters getParameters() {
-        return this.parameters;
+        return this.withConfiguration;
     }
 
     @Override
     public Set<String> getScopeKeys() {
-        return this.parameters.getReferencedLabels();
+        return this.internalParameters.getReferencedLabels();
     }
 
     @Override
     public <S, E> List<Traversal.Admin<S, E>> getLocalChildren() {
-        return this.parameters.getTraversals();
+        return this.internalParameters.getTraversals();
     }
 
     @Override
     public void configure(final Object... keyValues) {
-        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);
+        this.withConfiguration.set(this, keyValues);
+    }
+
+    private void configureInternalParams(final Object... keyValues) {
+        if (keyValues[0] == T.label && 
this.internalParameters.contains(T.label)) {
+            if (this.internalParameters.contains(T.label, 
Vertex.DEFAULT_LABEL)) {
+                this.internalParameters.remove(T.label);
+                this.internalParameters.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]));
+                        this.internalParameters.getRaw().get(T.label).get(0), 
keyValues[1]));
             }
-        } else if (keyValues[0] == T.id && this.parameters.contains(T.id)) {
+        } else if (keyValues[0] == T.id && 
this.internalParameters.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]));
+                    this.internalParameters.getRaw().get(T.id).get(0), 
keyValues[1]));
         } else {
-            this.parameters.set(this, keyValues);
+            this.internalParameters.set(this, keyValues);
         }
     }
 
@@ -120,7 +125,7 @@ public class AddVertexStartStep extends 
AbstractStep<Vertex, Vertex>
         if (this.first) {
             this.first = false;
             final TraverserGenerator generator = 
this.getTraversal().getTraverserGenerator();
-            final Vertex vertex = 
this.getTraversal().getGraph().get().addVertex(this.parameters.getKeyValues(generator.generate(false,
 (Step) this, 1L)));
+            final Vertex vertex = 
this.getTraversal().getGraph().get().addVertex(this.internalParameters.getKeyValues(generator.generate(false,
 (Step) this, 1L)));
             EventUtil.registerVertexCreation(callbackRegistry, getTraversal(), 
vertex);
             return generator.generate(vertex, this, 1L);
         } else
@@ -140,7 +145,7 @@ public class AddVertexStartStep extends 
AbstractStep<Vertex, Vertex>
 
     @Override
     public int hashCode() {
-        return super.hashCode() ^ this.parameters.hashCode();
+        return super.hashCode() ^ this.internalParameters.hashCode() ^ 
this.withConfiguration.hashCode();
     }
 
     @Override
@@ -150,26 +155,28 @@ public class AddVertexStartStep extends 
AbstractStep<Vertex, Vertex>
 
     @Override
     public String toString() {
-        return StringFactory.stepString(this, this.parameters);
+        return StringFactory.stepString(this, this.internalParameters);
     }
 
     @Override
     public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
         super.setTraversal(parentTraversal);
-        this.parameters.getTraversals().forEach(this::integrateChild);
+        this.internalParameters.getTraversals().forEach(this::integrateChild);
+        this.withConfiguration.getTraversals().forEach(this::integrateChild);
     }
 
     @Override
     public AddVertexStartStep clone() {
         final AddVertexStartStep clone = (AddVertexStartStep) super.clone();
-        clone.parameters = this.parameters.clone();
+        clone.internalParameters = this.internalParameters.clone();
+        clone.withConfiguration = this.withConfiguration.clone();
         clone.userProvidedLabel = this.userProvidedLabel;
         return clone;
     }
 
     @Override
     public Object getLabel() {
-        Object label = parameters.get(T.label, () -> 
Vertex.DEFAULT_LABEL).get(0);
+        Object label = internalParameters.get(T.label, () -> 
Vertex.DEFAULT_LABEL).get(0);
         if (label instanceof ConstantTraversal) {
             return ((ConstantTraversal<?, ?>) label).next();
         }
@@ -178,13 +185,13 @@ public class AddVertexStartStep extends 
AbstractStep<Vertex, Vertex>
 
     @Override
     public Map<Object, List<Object>> getProperties() {
-        return Collections.unmodifiableMap(parameters.getRaw());
+        return Collections.unmodifiableMap(internalParameters.getRaw());
     }
 
     @Override
     public boolean removeProperty(Object k) {
-        if (parameters.contains(k)) {
-            parameters.remove(k);
+        if (internalParameters.contains(k)) {
+            internalParameters.remove(k);
             return true;
         }
         return false;
@@ -192,8 +199,8 @@ public class AddVertexStartStep extends 
AbstractStep<Vertex, Vertex>
 
     @Override
     public boolean removeElementId() {
-        if (this.parameters.contains(T.id)) {
-            this.parameters.remove(T.id);
+        if (this.internalParameters.contains(T.id)) {
+            this.internalParameters.remove(T.id);
             return true;
         }
         return false;
@@ -201,6 +208,6 @@ public class AddVertexStartStep extends 
AbstractStep<Vertex, Vertex>
 
     @Override
     public void addProperty(final Object key, final Object value) {
-        configure(key, value);
+        configureInternalParams(key, value);
     }
 }
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
index b3baa8b729..f839402cd5 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
@@ -47,19 +47,20 @@ import java.util.Set;
 public class AddVertexStep<S> extends ScalarMapStep<S, Vertex>
         implements Writing<Event.VertexAddedEvent>, TraversalParent, Scoping, 
AddVertexStepContract<S>, Configuring {
 
-    private Parameters parameters = new Parameters();
+    private Parameters internalParameters = new Parameters();
+    private Parameters withConfiguration = new Parameters();
     private CallbackRegistry<Event.VertexAddedEvent> callbackRegistry;
     private boolean userProvidedLabel;
 
     public AddVertexStep(final Traversal.Admin traversal, final String label) {
         super(traversal);
-        this.parameters.set(this, T.label, null == label ? 
Vertex.DEFAULT_LABEL : label);
+        this.internalParameters.set(this, T.label, null == label ? 
Vertex.DEFAULT_LABEL : label);
         userProvidedLabel = label != null;
     }
 
     public AddVertexStep(final Traversal.Admin traversal, final 
Traversal.Admin<S,String> vertexLabelTraversal) {
         super(traversal);
-        this.parameters.set(this, T.label, null == vertexLabelTraversal ? 
Vertex.DEFAULT_LABEL : vertexLabelTraversal);
+        this.internalParameters.set(this, T.label, null == 
vertexLabelTraversal ? Vertex.DEFAULT_LABEL : vertexLabelTraversal);
         userProvidedLabel = vertexLabelTraversal != null;
     }
 
@@ -70,53 +71,57 @@ public class AddVertexStep<S> extends ScalarMapStep<S, 
Vertex>
 
     @Override
     public Object getElementId() {
-        List<Object> ids = this.parameters.get(T.id, null);
+        List<Object> ids = this.internalParameters.get(T.id, null);
         return ids.isEmpty() ? null : ids.get(0);
     }
 
     @Override
     public void setElementId(Object elementId) {
-        configure(T.id, elementId);
+        configureInternalParams(T.id, elementId);
     }
 
     @Override
     public Parameters getParameters() {
-        return this.parameters;
+        return this.withConfiguration;
     }
 
     @Override
     public Set<String> getScopeKeys() {
-        return this.parameters.getReferencedLabels();
+        return this.internalParameters.getReferencedLabels();
     }
 
     @Override
     public <S, E> List<Traversal.Admin<S, E>> getLocalChildren() {
-        return this.parameters.getTraversals();
+        return this.internalParameters.getTraversals();
     }
 
     @Override
     public void configure(final Object... keyValues) {
+        this.withConfiguration.set(this, keyValues);
+    }
+
+    private void configureInternalParams(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);
+        if (keyValues[0] == T.label && 
this.internalParameters.contains(T.label)) {
+            if (this.internalParameters.contains(T.label, 
Vertex.DEFAULT_LABEL)) {
+                this.internalParameters.remove(T.label);
+                this.internalParameters.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]));
+                        this.internalParameters.getRaw().get(T.label).get(0), 
keyValues[1]));
             }
-        } else if (keyValues[0] == T.id && this.parameters.contains(T.id)) {
+        } else if (keyValues[0] == T.id && 
this.internalParameters.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]));
+                    this.internalParameters.getRaw().get(T.id).get(0), 
keyValues[1]));
         } else {
-            this.parameters.set(this, keyValues);
+            this.internalParameters.set(this, keyValues);
         }
     }
 
     @Override
     protected Vertex map(final Traverser.Admin<S> traverser) {
-        final Vertex vertex = 
this.getTraversal().getGraph().get().addVertex(this.parameters.getKeyValues(traverser));
+        final Vertex vertex = 
this.getTraversal().getGraph().get().addVertex(this.internalParameters.getKeyValues(traverser));
         EventUtil.registerVertexCreation(callbackRegistry, getTraversal(), 
vertex);
         return vertex;
     }
@@ -129,7 +134,7 @@ public class AddVertexStep<S> extends ScalarMapStep<S, 
Vertex>
 
     @Override
     public int hashCode() {
-        return super.hashCode() ^ this.parameters.hashCode();
+        return super.hashCode() ^ this.internalParameters.hashCode() ^ 
this.withConfiguration.hashCode();
     }
 
     @Override
@@ -139,26 +144,28 @@ public class AddVertexStep<S> extends ScalarMapStep<S, 
Vertex>
 
     @Override
     public String toString() {
-        return StringFactory.stepString(this, this.parameters);
+        return StringFactory.stepString(this, this.internalParameters);
     }
 
     @Override
     public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
         super.setTraversal(parentTraversal);
-        this.parameters.getTraversals().forEach(this::integrateChild);
+        this.internalParameters.getTraversals().forEach(this::integrateChild);
+        this.withConfiguration.getTraversals().forEach(this::integrateChild);
     }
 
     @Override
     public AddVertexStep<S> clone() {
         final AddVertexStep<S> clone = (AddVertexStep<S>) super.clone();
-        clone.parameters = this.parameters.clone();
+        clone.internalParameters = this.internalParameters.clone();
+        clone.withConfiguration = this.withConfiguration.clone();
         clone.userProvidedLabel = this.userProvidedLabel;
         return clone;
     }
 
     @Override
     public Object getLabel() {
-        Object label = parameters.get(T.label, () -> 
Vertex.DEFAULT_LABEL).get(0);
+        Object label = internalParameters.get(T.label, () -> 
Vertex.DEFAULT_LABEL).get(0);
         if (label instanceof ConstantTraversal) {
             return ((ConstantTraversal<?, ?>) label).next();
         }
@@ -167,13 +174,13 @@ public class AddVertexStep<S> extends ScalarMapStep<S, 
Vertex>
 
     @Override
     public Map<Object, List<Object>> getProperties() {
-        return Collections.unmodifiableMap(parameters.getRaw());
+        return Collections.unmodifiableMap(internalParameters.getRaw());
     }
 
     @Override
     public boolean removeProperty(Object k) {
-        if (parameters.contains(k)) {
-            parameters.remove(k);
+        if (internalParameters.contains(k)) {
+            internalParameters.remove(k);
             return true;
         }
         return false;
@@ -181,8 +188,8 @@ public class AddVertexStep<S> extends ScalarMapStep<S, 
Vertex>
 
     @Override
     public boolean removeElementId() {
-        if (this.parameters.contains(T.id)) {
-            this.parameters.remove(T.id);
+        if (this.internalParameters.contains(T.id)) {
+            this.internalParameters.remove(T.id);
             return true;
         }
         return false;
@@ -190,6 +197,6 @@ public class AddVertexStep<S> extends ScalarMapStep<S, 
Vertex>
 
     @Override
     public void addProperty(final Object key, final Object value) {
-        configure(key, value);
+        configureInternalParams(key, value);
     }
 }
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
index feb02b98d8..f757531c58 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
@@ -50,39 +50,44 @@ import java.util.Set;
 public class AddPropertyStep<S extends Element> extends SideEffectStep<S>
         implements AddPropertyStepContract<S>, 
Writing<Event.ElementPropertyChangedEvent>, 
Deleting<Event.ElementPropertyChangedEvent>, Configuring {
 
-    private Parameters parameters = new Parameters();
+    private Parameters internalParameters = new Parameters();
+    private Parameters withConfiguration = new Parameters();
     private final VertexProperty.Cardinality cardinality;
     private CallbackRegistry<Event.ElementPropertyChangedEvent> 
callbackRegistry;
 
     public AddPropertyStep(final Traversal.Admin traversal, final 
VertexProperty.Cardinality cardinality, final Object keyObject, final Object 
valueObject) {
         super(traversal);
-        this.parameters.set(this, T.key, keyObject, T.value, valueObject);
+        this.internalParameters.set(this, T.key, keyObject, T.value, 
valueObject);
         this.cardinality = cardinality;
     }
 
     @Override
     public Parameters getParameters() {
-        return this.parameters;
+        return this.withConfiguration;
     }
 
     @Override
     public Set<String> getScopeKeys() {
-        return this.parameters.getReferencedLabels();
+        return this.internalParameters.getReferencedLabels();
     }
 
     @Override
     public <S, E> List<Traversal.Admin<S, E>> getLocalChildren() {
-        return this.parameters.getTraversals();
+        return this.internalParameters.getTraversals();
     }
 
     @Override
     public void configure(final Object... keyValues) {
-        this.parameters.set(this, keyValues);
+        this.withConfiguration.set(this, keyValues);
+    }
+
+    private void configureInternalParams(final Object... keyValues) {
+        this.internalParameters.set(this, keyValues);
     }
 
     @Override
     protected void sideEffect(final Traverser.Admin<S> traverser) {
-        final Object k = this.parameters.get(traverser, T.key, () -> {
+        final Object k = this.internalParameters.get(traverser, T.key, () -> {
             throw new IllegalStateException("The AddPropertyStep does not have 
a provided key: " + this);
         }).get(0);
 
@@ -91,10 +96,10 @@ public class AddPropertyStep<S extends Element> extends 
SideEffectStep<S>
             throw new IllegalStateException(String.format("T.%s is immutable 
on existing elements", ((T) k).name()));
 
         final String key = (String) k;
-        final Object value = this.parameters.get(traverser, T.value, () -> {
+        final Object value = this.internalParameters.get(traverser, T.value, 
() -> {
             throw new IllegalStateException("The AddPropertyStep does not have 
a provided value: " + this);
         }).get(0);
-        final Object[] vertexPropertyKeyValues = 
this.parameters.getKeyValues(traverser, T.key, T.value);
+        final Object[] vertexPropertyKeyValues = 
this.internalParameters.getKeyValues(traverser, T.key, T.value);
 
         final Element element = traverser.get();
 
@@ -185,14 +190,15 @@ public class AddPropertyStep<S extends Element> extends 
SideEffectStep<S>
 
     @Override
     public int hashCode() {
-        final int hash = super.hashCode() ^ this.parameters.hashCode();
+        final int hash = super.hashCode() ^ this.internalParameters.hashCode() 
^ this.withConfiguration.hashCode();
         return (null != this.cardinality) ? (hash ^ cardinality.hashCode()) : 
hash;
     }
 
     @Override
     public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
         super.setTraversal(parentTraversal);
-        this.parameters.getTraversals().forEach(this::integrateChild);
+        this.internalParameters.getTraversals().forEach(this::integrateChild);
+        this.withConfiguration.getTraversals().forEach(this::integrateChild);
     }
 
     @Override
@@ -202,42 +208,43 @@ public class AddPropertyStep<S extends Element> extends 
SideEffectStep<S>
 
     @Override
     public Object getKey() {
-        List<Object> keyParams = parameters.get(T.key, null);
+        List<Object> keyParams = internalParameters.get(T.key, null);
         return keyParams.isEmpty() ? null : keyParams.get(0);
     }
 
     @Override
     public Object getValue() {
-        List<Object> values = parameters.get(T.value, null);
+        List<Object> values = internalParameters.get(T.value, null);
         return values.isEmpty() ? null : values.get(0);
     }
 
     @Override
     public String toString() {
-        return StringFactory.stepString(this, this.parameters);
+        return StringFactory.stepString(this, this.internalParameters);
     }
 
     @Override
     public AddPropertyStep<S> clone() {
         final AddPropertyStep<S> clone = (AddPropertyStep<S>) super.clone();
-        clone.parameters = this.parameters.clone();
+        clone.internalParameters = this.internalParameters.clone();
+        clone.withConfiguration = this.withConfiguration.clone();
         return clone;
     }
 
     @Override
     public void addProperty(Object key, Object value) {
-        configure(key, value);
+        configureInternalParams(key, value);
     }
 
     @Override
     public Map<Object, List<Object>> getProperties() {
-        return parameters.getRaw(T.key, T.value);
+        return internalParameters.getRaw(T.key, T.value);
     }
 
     @Override
     public boolean removeProperty(Object k) {
-        if (parameters.contains(k)) {
-            parameters.remove(k);
+        if (internalParameters.contains(k)) {
+            internalParameters.remove(k);
             return true;
         }
         return false;
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStepTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStepTest.java
index fc370342b0..8ed18ca157 100644
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStepTest.java
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStepTest.java
@@ -235,9 +235,9 @@ public class AddVertexStepTest extends GValueStepTest {
         final Traversal.Admin t = mock(Traversal.Admin.class);
         
when(t.getTraverserSetSupplier()).thenReturn(TraverserSetSupplier.instance());
         final AddVertexStartStep starStep = new AddVertexStartStep(t, (String) 
null);
-        assertEquals(Vertex.DEFAULT_LABEL, 
starStep.getParameters().getRaw().get(T.label).get(0));
+        assertEquals(Vertex.DEFAULT_LABEL, starStep.getLabel());
         final AddVertexStep step = new AddVertexStep(t, (String) null);
-        assertEquals(Vertex.DEFAULT_LABEL, 
starStep.getParameters().getRaw().get(T.label).get(0));
+        assertEquals(Vertex.DEFAULT_LABEL, starStep.getLabel());
     }
 
     @Test
@@ -245,9 +245,9 @@ public class AddVertexStepTest extends GValueStepTest {
         final Traversal.Admin t = mock(Traversal.Admin.class);
         
when(t.getTraverserSetSupplier()).thenReturn(TraverserSetSupplier.instance());
         final AddVertexStartStep starStep = new AddVertexStartStep(t, 
(Traversal<?, String>) null);
-        assertEquals(Vertex.DEFAULT_LABEL, 
starStep.getParameters().getRaw().get(T.label).get(0));
+        assertEquals(Vertex.DEFAULT_LABEL, starStep.getLabel());
         final AddVertexStep step = new AddVertexStep(t, (String) null);
-        assertEquals(Vertex.DEFAULT_LABEL, 
starStep.getParameters().getRaw().get(T.label).get(0));
+        assertEquals(Vertex.DEFAULT_LABEL, starStep.getLabel());
     }
 
     @Test


Reply via email to