@Override
    public TraversalRing<A, B> clone() {
        try {
            final TraversalRing<A, B> clone = (TraversalRing<A, B>) super.clone();
            clone.traversals = new ArrayList<>();
            for (final Traversal.Admin<A, B> traversal : this.traversals) {
                clone.addTraversal(traversal.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/util/TraversalRing.java