@Override
  public boolean hasNext() {

    canRemove = false;

    if (nextObject != null) {
      return true;
    }

    while (iterator.hasNext()) {
      final Object obj = iterator.next();
      final T f = filter.filter(obj);
      if (f != null) {
        nextObject = f;
        return true;
      }
    }
    return false;
  }
@Override
  public boolean hasNext()