package jetbrains.mps.internal.collections.runtime.impl;
/*Generated by MPS */
import jetbrains.mps.internal.collections.runtime.Sequence;
import jetbrains.mps.internal.collections.runtime.ISequence;
import java.util.Iterator;
import java.util.NoSuchElementException;
public class NullSequence<T> extends Sequence<T> implements Iterable<T> {
private static final NullSequence<Object> INSTANCE = new NullSequence<Object>();
protected NullSequence() {
}
@Override
public T first() {
return null;
}
@Override
public T last() {
return null;
}
@Override
public ISequence<T> cut(int length) {
return this;
}
@Override
public ISequence<T> skip(int length) {
return this;
}
@Override
public ISequence<T> tail(int length) {
return this;
}
@Override
public ISequence<T> take(int length) {
return this;
}
@Override
public ISequence<T> page(int skip, int skipplustake) {
return this;
}
@Override
public Iterator<T> iterator() {
return new NullSequence.EmptyIterator<T>();
}
@SuppressWarnings(value = "unchecked")
public static <U> NullSequence<U> instance() {
return (NullSequence<U>) INSTANCE;
}
protected static class EmptyIterator<U> implements Iterator<U> {
protected EmptyIterator() {
}
@Override
public boolean hasNext() {
return false;
}
@Override
public U next() {
throw new NoSuchElementException();
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
}