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

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


The following commit(s) were added to refs/heads/3.8-dev by this push:
     new d4a48bee9b CTR: Update CONCRETE_STEPS list for all step contracts
d4a48bee9b is described below

commit d4a48bee9b1aff021f82b0a493153bc33f1579b0
Author: Cole-Greer <[email protected]>
AuthorDate: Tue Sep 30 17:34:05 2025 -0700

    CTR: Update CONCRETE_STEPS list for all step contracts
---
 .../tinkerpop/gremlin/process/traversal/P.java     |  2 --
 .../traversal/dsl/graph/GraphTraversal.java        |  4 ++--
 .../gremlin/process/traversal/step/GValue.java     | 17 ----------------
 .../traversal/step/filter/IsStepContract.java      |  6 ++++++
 .../step/filter/RangeGlobalStepContract.java       |  6 ++++++
 .../step/filter/TailGlobalStepContract.java        |  7 +++++++
 .../traversal/step/map/AddEdgeStepContract.java    |  4 +---
 .../traversal/step/map/AddElementStepContract.java | 11 ++++++++++-
 .../traversal/step/map/AddVertexStepContract.java  |  7 +++++++
 .../traversal/step/map/CallStepContract.java       |  7 +++++++
 .../traversal/step/map/MergeStepContract.java      |  7 +++++++
 .../process/traversal/step/map/RangeLocalStep.java |  1 -
 .../{filter => map}/RangeLocalStepContract.java    |  9 ++++++++-
 .../{filter => map}/RangeLocalStepPlaceholder.java |  4 +---
 .../process/traversal/step/map/TailLocalStep.java  |  1 -
 .../{filter => map}/TailLocalStepContract.java     | 10 +++++++++-
 .../{filter => map}/TailLocalStepPlaceholder.java  |  5 +----
 .../traversal/step/map/VertexStepContract.java     |  7 +++++++
 .../step/sideEffect/AddPropertyStepContract.java   |  7 +++++++
 .../optimization/InlineFilterStrategy.java         |  2 +-
 .../process/traversal/util/TraversalHelper.java    | 23 +++++++++++++++++++++-
 .../traversal/step/map/RangeLocalStepTest.java     |  1 -
 .../traversal/step/map/TailLocalStepTest.java      |  1 -
 23 files changed, 109 insertions(+), 40 deletions(-)

diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java
index 6b32e762cd..776981dc68 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java
@@ -30,9 +30,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.Set;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index bed433ed61..482d4d9e49 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -51,9 +51,9 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.IsStepPlaceholder;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeGlobalStepPlaceholder;
-import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeLocalStepPlaceholder;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.TailGlobalStepPlaceholder;
-import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.TailLocalStepPlaceholder;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.RangeLocalStepPlaceholder;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.TailLocalStepPlaceholder;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeStepPlaceholder;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStepPlaceholder;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.CallStepPlaceholder;
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GValue.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GValue.java
index 35dda09348..348b3a7c7b 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GValue.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GValue.java
@@ -340,23 +340,6 @@ public class GValue<V> implements Serializable, Cloneable {
         return values;
     }
 
-    /**
-     * Converts possible {@link GValue} objects argument array to their values 
to prevent them from leaking to the Graph API.
-     * Providers extending from this step should use this method to get actual 
values to prevent any {@link GValue}
-     * objects from leaking to the Graph API.
-     */
-    public static Object[] resolveToValues(final Object[] gvalues) {
-        final Object[] values = new Object[gvalues.length];
-        for (int i = 0; i < gvalues.length; i++) {
-            values[i] = gvalues[i] instanceof GValue ? ((GValue<?>) 
gvalues[i]).get() : gvalues[i];
-            if (values[i] instanceof GValueConstantTraversal) {
-                // TODO:: This seems out of place here, find a better home for 
this.
-                values[i] = ((GValueConstantTraversal<?, ?>) 
values[i]).getConstantTraversal();
-            }
-        }
-        return values;
-    }
-
     /**
      * Tests if any of the objects are GValues.
      */
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsStepContract.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsStepContract.java
index d44cefb239..178be81c22 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsStepContract.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsStepContract.java
@@ -22,6 +22,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import 
org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -29,6 +30,11 @@ import java.util.Set;
  */
 public interface IsStepContract<S> extends Step<S, S> {
 
+    /**
+     * Concrete implementations of this contract that can be referenced as 
TinkerPop implementations.
+     */
+    List<Class<? extends Step>> CONCRETE_STEPS = List.of(IsStep.class, 
IsStepPlaceholder.class);
+
     /**
      * Retrieves the step's predicate.
      *
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStepContract.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStepContract.java
index cf75b0324a..f8dfb628e7 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStepContract.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStepContract.java
@@ -29,6 +29,7 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSe
 import 
org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
+import java.util.List;
 import java.util.NoSuchElementException;
 
 /**
@@ -36,6 +37,11 @@ import java.util.NoSuchElementException;
  */
 public interface RangeGlobalStepContract<S> extends Step<S, S>, 
FilteringBarrier<TraverserSet<S>>, Ranging, Bypassing {
 
+    /**
+     * Concrete implementations of this contract that can be referenced as 
TinkerPop implementations.
+     */
+    List<Class<? extends Step>> CONCRETE_STEPS = 
List.of(RangeGlobalStep.class, RangeGlobalStepPlaceholder.class);
+
     /**
      * Retrieves the lower bound of the range.
      *
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailGlobalStepContract.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailGlobalStepContract.java
index e4f04bdcd9..79f0393d63 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailGlobalStepContract.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailGlobalStepContract.java
@@ -27,9 +27,16 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSe
 import 
org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
+import java.util.List;
 import java.util.NoSuchElementException;
 
 public interface TailGlobalStepContract<S> extends Step<S, S>, Bypassing, 
FilteringBarrier<TraverserSet<S>> {
+
+    /**
+     * Concrete implementations of this contract that can be referenced as 
TinkerPop implementations.
+     */
+    List<Class<? extends Step>> CONCRETE_STEPS = List.of(TailGlobalStep.class, 
TailGlobalStepPlaceholder.class);
+
     Long getLimit();
 
     default GValue<Long> getLimitAsGValue() {
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepContract.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepContract.java
index 446747379d..d99f01484d 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepContract.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepContract.java
@@ -18,8 +18,6 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
@@ -40,7 +38,7 @@ public interface AddEdgeStepContract<S> extends 
AddElementStepContract<S, Edge>,
     /**
      * Concrete implementations of this contract that can be referenced as 
TinkerPop implementations.
      */
-    List<Class<? extends Step>> CONCRETE_STEPS = 
Collections.unmodifiableList(Arrays.asList(AddEdgeStep.class, 
AddEdgeStepPlaceholder.class));
+    List<Class<? extends Step>> CONCRETE_STEPS = List.of(AddEdgeStep.class, 
AddEdgeStepPlaceholder.class, AddEdgeStartStep.class, 
AddEdgeStartStepPlaceholder.class);
 
     /**
      * Gets the "from" vertex for the edge to be added. If the "from" vertex 
was added as a {@link Vertex}, ID, {@link GValue},
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddElementStepContract.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddElementStepContract.java
index 826225a16b..2ec26a594c 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddElementStepContract.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddElementStepContract.java
@@ -20,14 +20,23 @@ package 
org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring;
-import org.apache.tinkerpop.gremlin.process.traversal.step.GValue;
 import org.apache.tinkerpop.gremlin.process.traversal.step.PropertiesHolder;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 
 import java.util.HashSet;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 public interface AddElementStepContract<S, E> extends Step<S, E>, 
PropertiesHolder, TraversalParent, Scoping, Configuring {
+
+    /**
+     * Concrete implementations of this contract that can be referenced as 
TinkerPop implementations.
+     */
+    List<Class<? extends Step>> CONCRETE_STEPS = 
Stream.of(AddVertexStepContract.CONCRETE_STEPS, 
AddEdgeStepContract.CONCRETE_STEPS)
+            .flatMap(List::stream).collect(Collectors.toList());
+
     Object getLabel();
 
     default Object getLabelWithGValue() {
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStepContract.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStepContract.java
index c97845b1f0..1f64f98138 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStepContract.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStepContract.java
@@ -23,7 +23,14 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.step.Writing;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
+import java.util.List;
+
 public interface AddVertexStepContract<S> extends Step<S, Vertex>, 
AddElementStepContract<S, Vertex>, Writing<Event.VertexAddedEvent> {
 
+    /**
+     * Concrete implementations of this contract that can be referenced as 
TinkerPop implementations.
+     */
+    List<Class<? extends Step>> CONCRETE_STEPS = List.of(AddVertexStep.class, 
AddVertexStepPlaceholder.class, AddVertexStartStep.class, 
AddVertexStartStepPlaceholder.class);
+
     boolean hasUserProvidedLabel();
 }
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CallStepContract.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CallStepContract.java
index 3e4bf03224..dc0c127416 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CallStepContract.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CallStepContract.java
@@ -25,9 +25,16 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.structure.service.Service;
 import org.apache.tinkerpop.gremlin.structure.service.ServiceRegistry;
 
+import java.util.List;
 import java.util.Map;
 
 public interface CallStepContract<S, E> extends Step<S, E>, Configuring, 
TraversalParent {
+
+    /**
+     * Concrete implementations of this contract that can be referenced as 
TinkerPop implementations.
+     */
+    List<Class<? extends Step>> CONCRETE_STEPS = List.of(CallStep.class, 
CallStepContract.class);
+
     Service<S, E> service();
 
     default Service<S, E> serviceGValueSafe() {
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeStepContract.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeStepContract.java
index 77c3879472..7379888648 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeStepContract.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeStepContract.java
@@ -19,6 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Merge;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.lambda.ConstantTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Deleting;
@@ -29,11 +30,17 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.step.Writing;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import 
org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 public interface MergeStepContract<S, E, C> extends Writing<Event>, 
Deleting<Event>, TraversalOptionParent<Merge, S, C>, PropertiesHolder {
 
+    /**
+     * Concrete implementations of this contract that can be referenced as 
TinkerPop implementations.
+     */
+    List<Class<? extends Step>> CONCRETE_STEPS = 
List.of(MergeVertexStep.class, MergeVertexStepPlaceholder.class, 
MergeEdgeStep.class, MergeEdgeStepPlaceholder.class);
+
     Traversal.Admin<S, Map> getMergeTraversal();
 
     /**
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStep.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStep.java
index d3d12bcf15..d62a25af2d 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStep.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStep.java
@@ -21,7 +21,6 @@ package 
org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeLocalStepContract;
 import 
org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeLocalStepContract.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStepContract.java
similarity index 87%
rename from 
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeLocalStepContract.java
rename to 
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStepContract.java
index b58f31950a..8f15f0b2c3 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeLocalStepContract.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStepContract.java
@@ -16,17 +16,24 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
+package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.step.GValue;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Ranging;
 
+import java.util.List;
+
 /**
  * Defines the contract for {@code range} related steps.
  */
 public interface RangeLocalStepContract<S> extends Step<S, S>, Ranging {
 
+    /**
+     * Concrete implementations of this contract that can be referenced as 
TinkerPop implementations.
+     */
+    List<Class<? extends Step>> CONCRETE_STEPS = List.of(RangeLocalStep.class, 
RangeLocalStepPlaceholder.class);
+
     /**
      * Retrieves the lower bound of the range.
      *
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeLocalStepPlaceholder.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStepPlaceholder.java
similarity index 95%
rename from 
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeLocalStepPlaceholder.java
rename to 
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStepPlaceholder.java
index 72fdcfe870..f36b2a4c9c 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeLocalStepPlaceholder.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStepPlaceholder.java
@@ -16,14 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
+package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.GValue;
 import org.apache.tinkerpop.gremlin.process.traversal.step.GValueHolder;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.RangeLocalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.ScalarMapStep;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 
 import java.util.Collection;
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStep.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStep.java
index 472304720f..6458657d25 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStep.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStep.java
@@ -22,7 +22,6 @@ package 
org.apache.tinkerpop.gremlin.process.traversal.step.map;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.TailLocalStepContract;
 import 
org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailLocalStepContract.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStepContract.java
similarity index 77%
rename from 
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailLocalStepContract.java
rename to 
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStepContract.java
index e7357b33d3..120207db4c 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailLocalStepContract.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStepContract.java
@@ -16,12 +16,20 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
+package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.step.GValue;
 
+import java.util.List;
+
 public interface TailLocalStepContract<S> extends Step<S, S> {
+
+    /**
+     * Concrete implementations of this contract that can be referenced as 
TinkerPop implementations.
+     */
+    List<Class<? extends Step>> CONCRETE_STEPS = List.of(TailLocalStep.class, 
TailLocalStepPlaceholder.class);
+
     Long getLimit();
 
     default GValue<Long> getLimitAsGValue() {
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailLocalStepPlaceholder.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStepPlaceholder.java
similarity index 91%
rename from 
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailLocalStepPlaceholder.java
rename to 
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStepPlaceholder.java
index 29d8bf6da0..82f27cab8c 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailLocalStepPlaceholder.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStepPlaceholder.java
@@ -16,15 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
+package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.GValue;
 import org.apache.tinkerpop.gremlin.process.traversal.step.GValueHolder;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.ScalarMapStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.TailLocalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 
 import java.util.Collection;
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStepContract.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStepContract.java
index b7c86f2f09..fae70cda09 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStepContract.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStepContract.java
@@ -26,9 +26,16 @@ import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
 import java.util.Arrays;
+import java.util.List;
 import java.util.Set;
 
 public interface VertexStepContract<E extends Element> extends Step<Vertex, 
E>, AutoCloseable {
+
+    /**
+     * Concrete implementations of this contract that can be referenced as 
TinkerPop implementations.
+     */
+    List<Class<? extends Step>> CONCRETE_STEPS = List.of(VertexStep.class, 
VertexStepPlaceholder.class);
+
     Direction getDirection();
 
     String[] getEdgeLabels();
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStepContract.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStepContract.java
index 446f8ae9bb..5ea7443cf7 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStepContract.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStepContract.java
@@ -30,9 +30,16 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 
 import java.util.HashSet;
+import java.util.List;
 
 public interface AddPropertyStepContract<S> extends Step<S, S>, 
TraversalParent, Scoping, PropertiesHolder,
         Writing<Event.ElementPropertyChangedEvent>, 
Deleting<Event.ElementPropertyChangedEvent>, Configuring {
+
+    /**
+     * Concrete implementations of this contract that can be referenced as 
TinkerPop implementations.
+     */
+    List<Class<? extends Step>> CONCRETE_STEPS = 
List.of(AddPropertyStep.class, AddPropertyStepPlaceholder.class);
+
     VertexProperty.Cardinality getCardinality();
 
     @Override
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java
index 3dc679bcdd..70a6a4604b 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java
@@ -140,7 +140,7 @@ public final class InlineFilterStrategy extends 
AbstractTraversalStrategy<Traver
                         step.removeHasContainer(hasContainer);
                     } else if (hasContainer.getBiPredicate() == 
Contains.within &&
                             hasContainer.getValue() instanceof Collection &&
-                            ((Collection) 
hasContainer.getValue()).containsAll(Arrays.asList(GValue.resolveToValues(edgeLabelGValues.toArray()))))
 {
+                            ((Collection) 
hasContainer.getValue()).containsAll(Arrays.asList(GValue.resolveToValues(edgeLabelGValues.stream().toArray(GValue[]::new)))))
 {
                         
edgeLabelGValues.addAll(hasContainer.getPredicate().isParameterized() ?
                                 hasContainer.getPredicate().getGValues() :
                                 
Arrays.asList(GValue.ensureGValues(((Collection<String>) 
hasContainer.getValue()).toArray())));
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
index 156f92bdb1..c3cc3db5f6 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
@@ -38,20 +38,30 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatStep;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.ConnectiveStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.IsStepContract;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.NotStep;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeGlobalStepContract;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.TailGlobalStepContract;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.WherePredicateStep;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTraversalStep;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeStepContract;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.AddElementStepContract;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStepContract;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.CallStepContract;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeVertexStep;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStepContract;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.LabelStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchStep;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.MergeStepContract;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertyMapStep;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.RangeLocalStepContract;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectOneStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectStep;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.TailLocalStepContract;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStepContract;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AddPropertyStepContract;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StartStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
@@ -89,8 +99,19 @@ public final class TraversalHelper {
      * This registry is intentionally simple and local to TraversalHelper.
      */
     private static final Map<Class<?>, List<Class<? extends Step>>> 
STEP_CONTRACT_REGISTRY = new HashMap<>() {{
-        put(GraphStepContract.class, GraphStepContract.CONCRETE_STEPS);
         put(AddEdgeStepContract.class, AddEdgeStepContract.CONCRETE_STEPS);
+        put(AddElementStepContract.class, 
AddElementStepContract.CONCRETE_STEPS);
+        put(AddPropertyStepContract.class, 
AddPropertyStepContract.CONCRETE_STEPS);
+        put(AddVertexStepContract.class, AddVertexStepContract.CONCRETE_STEPS);
+        put(CallStepContract.class, CallStepContract.CONCRETE_STEPS);
+        put(GraphStepContract.class, GraphStepContract.CONCRETE_STEPS);
+        put(IsStepContract.class, IsStepContract.CONCRETE_STEPS);
+        put(MergeStepContract.class, MergeStepContract.CONCRETE_STEPS);
+        put(RangeGlobalStepContract.class, 
RangeGlobalStepContract.CONCRETE_STEPS);
+        put(RangeLocalStepContract.class, 
RangeLocalStepContract.CONCRETE_STEPS);
+        put(TailGlobalStepContract.class, 
TailGlobalStepContract.CONCRETE_STEPS);
+        put(TailLocalStepContract.class, TailLocalStepContract.CONCRETE_STEPS);
+        put(VertexStepContract.class, VertexStepContract.CONCRETE_STEPS);
     }};
 
     private TraversalHelper() { }
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStepTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStepTest.java
index ffe3e804b7..17ba5977fb 100644
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStepTest.java
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStepTest.java
@@ -31,7 +31,6 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.GValue;
 import org.apache.tinkerpop.gremlin.process.traversal.step.GValueStepTest;
-import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeLocalStepPlaceholder;
 import org.junit.Test;
 
 import static 
org.apache.tinkerpop.gremlin.process.traversal.step.map.RangeLocalStep.applyRange;
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStepTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStepTest.java
index f47f7f989c..56d861351e 100644
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStepTest.java
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStepTest.java
@@ -28,7 +28,6 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.GValue;
 import org.apache.tinkerpop.gremlin.process.traversal.step.GValueStepTest;
-import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.TailLocalStepPlaceholder;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;


Reply via email to