package jetbrains.mps.internal.collections.runtime.impl; /*Generated by MPS */ import java.util.Iterator; import java.util.List; import java.util.ArrayList; import java.util.ListIterator; public class ReversingSequence<T> extends AbstractChainedSequence<T, T> { public ReversingSequence(Iterable<T> input) { super(input); } @Override public Iterator<T> iterator() { List<T> cache = new ArrayList<T>(); for (T u : getInput()) { cache.add(u); } return new ReversingSequence.ReversingIterator<T>(cache.listIterator(cache.size())); } private static class ReversingIterator<U> implements Iterator<U> { private ListIterator<U> listIterator; public ReversingIterator(ListIterator<U> listIterator) { this.listIterator = listIterator; } @Override public boolean hasNext() { return listIterator.hasPrevious(); } @Override public U next() { return listIterator.previous(); } @Override public void remove() { listIterator.remove(); } } }