@Test
    public void testEquality() {
        final List<Step> instances1 = this.getStepInstances();
        final List<Step> instances2 = this.getStepInstances();
        for (int i = 0; i < instances1.size(); i++) {
            final Step instance1 = instances1.get(i);
            assertEquals(instance1, instance1.clone());
            assertEquals(instance1.hashCode(), instance1.clone().hashCode());
            for (int j = 0; j < instances2.size(); j++) {
                final Step instance2 = instances2.get(j);
                if (i != j) {
                    assertNotEquals(instance1, instance2);
                } else {
                    assertEquals(instance1, instance2);
                    assertEquals(instance1.hashCode(), instance2.hashCode());
                }
            }
        }
    }
Return a list of traversals for which the last step is the step to be tested. None of the traversals will be
executed during the tests, hence the traversal may be invalid. It's only important to provide as many distinct
scenarios for the last step as possible.

@return List of traversals.
gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/StepTest.java