@Override
    public E previous() {
      if (!hasPrevious()) {
        throw new NoSuchElementException();
      }
      //noinspection unchecked
      return (E)snapshot[lastRet = --cursor];
    }
@Override
    public E previous()