@Override
    public PureTraversal<S, E> clone() {
        try {
            final PureTraversal<S, E> clone = (PureTraversal<S, E>) super.clone();
            clone.pureTraversal = this.pureTraversal.clone();
            clone.cachedTraversal = null;
            return clone;
        } catch (final CloneNotSupportedException e) {
            throw new IllegalStateException(e.getMessage(), e);
        }
    }
@author Marko A. Rodriguez (http://markorodriguez.com)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/PureTraversal.java