apply method of the strategy I was getting the index of the PropertiesStep instances using the indexOf method:traversal.getSteps().indexOf(step) ReferenceElementStrategy (maybe others but I haven't checked).indexOf was not always returning the correct index. After some digging I found that PropertiesStep.hashcode() does not necessarily return a unique value.PropertiesStep in the traversal, both of which were returning the same value from PropertiesStep.hashcode().indexOf so this isn't blocking me in any way, I just thought it was worth bringing attention to.ObjectValue that allows us to have nested properties (required by the model we're working with) which results in a query like this being valid:g.V().hasLabel("myLabel").values().values()values twice in succession with no parameters, but I did this in a unit test which is what triggered the behaviour I described above....PropertiesStep under the same traversal.== and compare by reference (you need the reference of the exact object in advance though). You may also rely on Step ID to identify some Step in such case as well.