@Override
    public int hashCode() {
        int result = super.hashCode();
        result ^= Boolean.hashCode(this.untilFirst);
        result ^= Boolean.hashCode(this.emitFirst) << 1;

        // not a normal state, but prevents NPE during strategy application allowing the better
        // user-friendly error message to show up at iteration
        if (this.repeatTraversal != null)
            result ^= this.repeatTraversal.hashCode();
        if (this.loopName != null)
            result ^= this.loopName.hashCode();
        if (this.untilTraversal != null)
            result ^= this.untilTraversal.hashCode();
        if (this.emitTraversal != null)
            result ^= this.emitTraversal.hashCode();
        return result;
    }
@author Marko A. Rodriguez (http://markorodriguez.com)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java