class DistributedRegion extends LocalRegion implements InternalDistributedRegion {

  void validateAsynchronousEventDispatcher(String asyncDispatcherId) {
    for (GatewaySender sender : getCache().getAllGatewaySenders()) {
      if (sender.isParallel() && sender.getId().equals(asyncDispatcherId)) {
        // Once decided to support REPLICATED regions with parallel
        // gateway-sender/asynchronous-event-queue, ShadowPartitionedRegionForUserRR should be
        // called and this validation should be removed.
        if (sender.getId().contains(AsyncEventQueueImpl.ASYNC_EVENT_QUEUE_PREFIX)) {
          throw new AsyncEventQueueConfigurationException(String.format(
              "Parallel Async Event Queue %s can not be used with replicated region %s",
              getAsyncEventQueueIdFromSenderId(sender.getId()), getFullPath()));
        } else {
          throw new GatewaySenderConfigurationException(
              String.format("Parallel Gateway Sender %s can not be used with replicated region %s",
                  sender.getId(), getFullPath()));
        }
      }
    }
  }

  protected  DistributedRegion(String regionName, RegionAttributes attrs, LocalRegion parentRegion,
      InternalCache cache, InternalRegionArguments internalRegionArgs,
      StatisticsClock statisticsClock);

}