code: public Query<S> query(Filter<S> filter) throws FetchException {
          return query(filter, null);
      }
docs: Returns a new or cached query for the given filter.
  
  @throws IllegalArgumentException if filter is null