@Override
  public T next() {
    if (!hasNext()) {
      throw new NoSuchElementException();
    }

    final T obj = nextObject;
    nextObject = null;
    canRemove = true;
    return obj;
  }
@Override
  public T next()