@SuppressWarnings("synthetic-access")
  public void recordEventState(InternalDistributedMember sender,
      Map<? extends DataSerializable, ? extends DataSerializable> eventState) {
    StringBuilder sb = null;
    final boolean isDebugEnabled_BS = logger.isTraceEnabled(LogMarker.BRIDGE_SERVER_VERBOSE);
    if (isDebugEnabled_BS) {
      sb = new StringBuilder(500);
      sb.append("Recording initial event state for ").append(regionName).append(" from ")
          .append(sender);
    }
    for (Object value : eventState.entrySet()) {
      Map.Entry<ThreadIdentifier, DispatchedAndCurrentEvents> entry =
          (Map.Entry<ThreadIdentifier, DispatchedAndCurrentEvents>) value;
      DispatchedAndCurrentEvents giiDace = entry.getValue();
      if (giiDace != null) { // fix for bug #41789: npe during state transfer
        giiDace.owningQueue = this;
        giiDace.isGIIDace = true;
        if (giiDace.QRM_LOCK == null) {
          // this has happened a number of times with JDK 1.6, even when QRM_LOCK
          // was a "final" field
          giiDace.QRM_LOCK = new Object();
        }
        if (isDebugEnabled_BS) {
          sb.append("\n  ").append(entry.getKey().expensiveToString())
              .append("; sequenceID=").append(giiDace.lastSequenceIDPut);
        }
        // use putIfAbsent to avoid overwriting newer dispatch information
        Object o = eventsMap.putIfAbsent(entry.getKey(), giiDace);
        if (o != null && isDebugEnabled_BS) {
          sb.append(" -- could not store.  found ").append(o);
        }
      }
    }
    if (isDebugEnabled_BS) {
      logger.trace(LogMarker.BRIDGE_SERVER_VERBOSE, sb.toString());
    }
  }
install DACE information from an initial image provider
geode-core/src/main/java/org/apache/geode/internal/cache/ha/HARegionQueue.java