@Override
                public boolean executeWith(Object entList, int b) {
                  if (rgn.getCache().isClosed()) {
                    return false;
                  }

                  if (last) {
                    throw new InternalGemFireError("Already processed last chunk");
                  }

                  List<Entry> entries = uncheckedCast(entList);
                  // if abortTest, then never send last flag set to true
                  last = b > 0 && !lclAbortTest;
                  try {
                    boolean abort = rgn.isDestroyed();
                    if (!abort) {
                      int flowControlId = flowControl.getId();
                      Map<VersionSource<?>, Long> gcVersions = null;
                      if (last && rgn.getVersionVector() != null) {
                        gcVersions = rgn.getVersionVector().getMemberToGCVersion();
                      }
                      replyWithData(dm, entries, seriesNum, msgNum++, numSeries, last,
                          flowControlId, versionVector != null, holderToSend, gcVersions);
                    }
                    return !abort;
                  } catch (CancelException e) {
                    return false;
                  }
                }
@param entList ArrayList of entries
@param b positive if last chunk
@return true to continue to next chunk
geode-core/src/main/java/org/apache/geode/internal/cache/InitialImageOperation.java