code: @Override
  	public ListIterator<Integer> listIterator(final int location) {
  		return new ListIterator<Integer>() {
  			private int index = location;
  
  			@Override
  			public void set(final Integer object) {
  				throw new UnsupportedOperationException(IMMUTABLE_MESSAGE);
  			}
  
  			@Override
  			public void remove() {
  				throw new UnsupportedOperationException(IMMUTABLE_MESSAGE);
  			}
  
  			@Override
  			public int previousIndex() {
  				return index - 1;
  			}
  
  			@Override
  			public Integer previous() {
  				if (!hasPrevious()) {
  					throw new NoSuchElementException(String.valueOf(index));
  				}
  
  				return get(--index);
  			}
  
  			@Override
  			public int nextIndex() {
  				return index + 1;
  			}
  
  			@Override
  			public Integer next() {
  				if (!hasNext()) {
  					throw new NoSuchElementException(String.valueOf(index));
  				}
  
  				return get(index++);
  			}
  
  			@Override
  			public boolean hasPrevious() {
  				return index > 0;
  			}
  
  			@Override
  			public boolean hasNext() {
  				return index < size();
  			}
  
  			@Override
  			public void add(final Integer object) {
  				throw new UnsupportedOperationException(IMMUTABLE_MESSAGE);
  			}
  		};
  	}
docs: {@inheritDoc}