code: public QueryableEntriesSegment run(String mapName, Predicate predicate, int partitionId, int tableIndex, int fetchSize) {
          int lastIndex = tableIndex;
          final List<QueryableEntry> resultList = new LinkedList<>();
          final PartitionContainer partitionContainer = mapServiceContext.getPartitionContainer(partitionId);
          final RecordStore recordStore = partitionContainer.getRecordStore(mapName);
          final Extractors extractors = mapServiceContext.getExtractors(mapName);
  
          while (resultList.size() < fetchSize && lastIndex >= 0) {
              final MapEntriesWithCursor cursor = recordStore.fetchEntries(lastIndex, fetchSize - resultList.size());
              lastIndex = cursor.getNextTableIndexToReadFrom();
              final Collection<? extends Entry<Data, Data>> entries = cursor.getBatch();
              if (entries.isEmpty()) {
                  break;
              }
              for (Entry<Data, Data> entry : entries) {
                  QueryableEntry queryEntry = new LazyMapEntry(entry.getKey(), entry.getValue(), serializationService, extractors);
                  if (predicate.apply(queryEntry)) {
                      resultList.add(queryEntry);
                  }
              }
          }
          return new QueryableEntriesSegment(resultList, lastIndex);
      }
docs: Executes the predicate on a partition chunk. The offset in the partition is defined by the {@code tableIndex}
  and the soft limit is defined by the {@code fetchSize}. The method returns the matched entries and an
  index from which new entries can be fetched which allows for efficient iteration of query results.
  <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 mapName     the map name
  @param predicate   the predicate which the entries must match
  @param partitionId the partition which is queried
  @param tableIndex  the index from which entries are queried
  @param fetchSize   the soft limit for the number of entries to fetch
  @return entries matching the predicate and a table index from which new entries can be fetched