# Package org.optaplanner.core.impl.heuristic.selector.common.iterator

- Interface Summary
  Interface | Description
  --- | ---
  ListIterable<T> | An extension on the `Iterable` interface that supports `ListIterable.listIterator()` and `ListIterable.listIterator(int)`.

- Class Summary
  Class | Description
  --- | ---
  AbstractOriginalChangeIterator<S extends Move> |
  AbstractOriginalSwapIterator<S,​SubS> |
  AbstractRandomChangeIterator<S extends Move> |
  AbstractRandomSwapIterator<S,​SubS> |
  CachedListRandomIterator<S> | This `Iterator` does not shuffle and is never ending.
  SelectionIterator<S> |
  SelectionListIterator<S> |
  SingletonIterator<T> |
  UpcomingSelectionIterator<S> | IMPORTANT: The constructor of any subclass of this abstract class, should never call any of its child `Selector`'s `Iterator.hasNext()` or `Iterator.next()` methods, because that can cause descendant `Selector`s to be selected too early (which breaks `MimicReplayingEntitySelector`).