public void shuffle(final Random random) {
        final List<Traverser.Admin<S>> list = new ArrayList<>(this.map.size());
        IteratorUtils.removeOnNext(this.map.values().iterator()).forEachRemaining(list::add);
        Collections.shuffle(list, random);
        this.map.clear();
        list.forEach(traverser -> this.map.put(traverser, traverser));
    }
@author Marko A. Rodriguez (http://markorodriguez.com)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/TraverserSet.java