code: public <R> Iterator<R> iterator(int fetchSize, int partitionId, Projection<Map.Entry<K, V>, R> projection,
                                      Predicate<K, V> predicate) {
          checkNotNull(projection, NULL_PROJECTION_IS_NOT_ALLOWED);
          checkNotNull(predicate, NULL_PREDICATE_IS_NOT_ALLOWED);
          checkNotPagingPredicate(predicate, "iterator");
          return new ClientMapQueryPartitionIterator<K, V, R>(this, getContext(), fetchSize, partitionId,
                  predicate, projection);
      }
docs: Returns an iterator for iterating the result of the projection on entries in the {@code partitionId} which
  satisfy the {@code predicate}. The {@link Iterator#remove()} method is not supported and will throw an
  {@link UnsupportedOperationException}.
  <p>
  The values are not fetched one-by-one but rather in batches.
  You may control the size of the batch by changing the {@code fetchSize} parameter.
  A too small {@code fetchSize} can affect performance since more data will have to be sent to and from the partition owner.
  A too high {@code fetchSize} means that more data will be sent which can block other operations from being sent,
  including internal operations.
  The underlying implementation may send more values in one batch than {@code fetchSize} if it needs to get to
  a "safepoint" to later resume iteration.
  Predicates of type {@link PagingPredicate} are not supported.
  <p>
  <b>NOTE</b>
  Iterating the map should be done only when the {@link IMap} is not being
  mutated and the cluster is stable (there are no migrations or membership changes).
  In other cases, the iterator may not return some entries or may return an entry twice.
  
  @param fetchSize   the size of the batches which will be sent when iterating the data
  @param partitionId the partition ID which is being iterated
  @param projection  the projection to apply before returning the value. {@code null} value is not allowed
  @param predicate   the predicate which the entries must match. {@code null} value is not allowed
  @param <R>         the return type
  @return the iterator for the projected entries
  @throws UnsupportedOperationException if {@link Iterator#remove()} is invoked
  @throws IllegalArgumentException      if the predicate is of type {@link PagingPredicate}
  @since 3.9