code: public static <C extends Compound> Sequence<C> shuffle(Sequence<C> sequence) {
  		List<C> compounds = sequence.getAsList();
  		Collections.shuffle(compounds);
  		return new ArrayListSequenceReader<C>(compounds,
  				sequence.getCompoundSet());
  	}
docs: Implements sequence shuffling by first materializing the given
  {@link Sequence} into a {@link List}, applying
  {@link Collections#shuffle(List)} and then returning the shuffled
  elements in a new instance of {@link SequenceBackingStore} which behaves
  as a {@link Sequence}.