package jetbrains.mps.internal.collections.runtime.impl; /*Generated by MPS */ import jetbrains.mps.internal.collections.runtime.IListSequence; import java.util.List; import java.util.Collection; import java.util.ListIterator; import jetbrains.mps.internal.collections.runtime.ISequence; import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes; import java.util.NoSuchElementException; public class NullListSequence<T> extends NullCollectionSequence<T> implements IListSequence<T>, List<T> { private static final NullListSequence<Object> INSTANCE = new NullListSequence<Object>(); protected NullListSequence() { } @Override public void add(int index, T element) { } @Override public boolean addAll(int index, Collection<? extends T> c) { return false; } @Override public T get(int index) { return null; } @Override public int indexOf(Object t) { return -1; } @Override public int lastIndexOf(Object o) { return -1; } @Override public ListIterator<T> listIterator() { return new NullListSequence.EmptyListIterator<T>(); } @Override public ListIterator<T> listIterator(int index) { return new NullListSequence.EmptyListIterator<T>(); } @Override public T remove(int index) { return null; } @Override public T set(int index, T element) { return null; } @Override public int size() { return 0; } @Override public List<T> subList(int fromIndex, int toIndex) { return this; } @Override public T removeElementAt(int idx) { return null; } @Override public T removeLastElement() { return null; } @Override public T insertElement(int idx, T t) { return null; } @Override public T getElement(int idx) { return null; } @Override public T setElement(int idx, T t) { return null; } @Override public IListSequence<T> addSequence(ISequence<? extends T> seq) { return this; } @Override public IListSequence<T> reversedList() { return this; } @Override public IListSequence<T> subListSequence(int fromIdx, int upToIdx) { return this; } @Override public IListSequence<T> headListSequence(int upToIdx) { return this; } @Override public IListSequence<T> tailListSequence(int fromIdx) { return this; } @Override public IListSequence<T> removeSequence(ISequence<? extends T> seq) { return this; } @Override public IListSequence<T> removeWhere(_FunctionTypes._return_P1_E0<? extends Boolean, ? super T> filter) { return (IListSequence<T>) super.removeWhere(filter); } @Override public IListSequence<T> asSynchronized() { return this; } @Override public IListSequence<T> asUnmodifiable() { return this; } @Override public List<T> toList() { return this; } @SuppressWarnings(value = "unchecked") @Override public T[] toGenericArray() { return (T[]) NullCollectionSequence.EMPTY_ARRAY; } @SuppressWarnings(value = "unchecked") @Override public T[] toGenericArray(Class<T> runtimeClass) { return (T[]) NullCollectionSequence.EMPTY_ARRAY; } @SuppressWarnings(value = "unchecked") public static <U> NullListSequence<U> instance() { return (NullListSequence<U>) INSTANCE; } protected static class EmptyListIterator<U> implements ListIterator<U> { protected EmptyListIterator() { } @Override public void add(U e) { } @Override public boolean hasNext() { return false; } @Override public boolean hasPrevious() { return false; } @Override public U next() { throw new NoSuchElementException(); } @Override public int nextIndex() { return -1; } @Override public U previous() { return null; } @Override public int previousIndex() { return -1; } @Override public void remove() { throw new UnsupportedOperationException(); } @Override public void set(U e) { throw new UnsupportedOperationException(); } } }