@Override
    public ProjectedTraverser<T, P> clone() {
        try {
            final ProjectedTraverser<T, P> clone = (ProjectedTraverser<T, P>) super.clone();
            clone.baseTraverser = (Traverser.Admin<T>) this.baseTraverser.clone();
            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/traverser/ProjectedTraverser.java