@Override
  public int size() {
    if (size_ != -1) {
      return size_;
    }
    if (invalid_) {
      return 0;
    }

    try {
      if (searchQuery_ == null || searchQuery_.isEmpty()) {
        ViewNavigator nav = getNavigator();
        size_ = nav == null ? 0 : nav.getCount();
      } else {
        ViewEntryCollection vec = getEntries();
        size_ = vec == null ? 0 : vec.getCount();
      }
    } catch (Exception e) {
      throw e instanceof RuntimeException ? (RuntimeException) e : new RuntimeException(e);
    }
    return size_;
  }