# 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<Solution_,​Move_ extends Move<Solution_>> |
  AbstractOriginalSwapIterator<Solution_,​Move_ extends Move<Solution_>,​SubSelection_> |
  AbstractRandomChangeIterator<Solution_,​Move_ extends Move<Solution_>> |
  AbstractRandomSwapIterator<Solution_,​Move_ extends Move<Solution_>,​SubSelection_> |
  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`).