class HARegionQueue implements RegionQueue {

  List<EventID> getGIIEvents() {
    List<EventID> events = new LinkedList<>();
    for (long i = positionBeforeGII; i < positionAfterGII + 1; i++) {
      Map.Entry<?, ?> entry = region.getEntry(i);
      // could be already removed after processing QueueRemovalMessage
      if (entry != null && entry.getValue() instanceof HAEventWrapper) {
        HAEventWrapper wrapper = (HAEventWrapper) entry.getValue();
        events.add(wrapper.getEventId());
      }
    }
    return events;
  }

  protected  HARegionQueue(String regionName, InternalCache cache, Map haContainer,
      ClientProxyMembershipID clientProxyId, final byte clientConflation, boolean isPrimary,
      StatisticsClock statisticsClock);
  @VisibleForTesting  HARegionQueue(String regionName, HARegion haRegion, InternalCache cache, Map haContainer,
      ClientProxyMembershipID clientProxyId, final byte clientConflation, boolean isPrimary,
      HARegionQueueStats stats, StoppableReentrantReadWriteLock giiLock,
      StoppableReentrantReadWriteLock rwLock, CancelCriterion cancelCriterion,
      boolean puttingGIIDataInQueue, StatisticsClock statisticsClock);

}