@Override
    public int hashCode() {
        int result = super.hashCode();
        if (this.start instanceof Iterator) {
            final Iterator iterator = (Iterator) this.start;
            final List list = new ArrayList();
            while (iterator.hasNext()) {
                final Object item = iterator.next();
                if (item != null) result ^= item.hashCode();
                list.add(item);
            }
            this.start = list.iterator();
        } else if (this.start != null) {
            result ^= this.start.hashCode();
        }
        return result;
    }
@author Marko A. Rodriguez (http://markorodriguez.com)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StartStep.java