private void drainEventsReceivedWhileRegisteringClient(
      final CacheClientProxy cacheClientProxy,
      final ClientRegistrationEventQueue registrationEventQueue,
      final CacheClientNotifier cacheClientNotifier) {
    ClientRegistrationEvent queuedEvent;
    while ((queuedEvent = registrationEventQueue.poll()) != null) {
      InternalCacheEvent internalCacheEvent = queuedEvent.internalCacheEvent;
      Conflatable conflatable = queuedEvent.conflatable;
      processEventAndDeliverConflatable(cacheClientProxy, cacheClientNotifier, internalCacheEvent,
          conflatable, null);
    }
  }
For simplicity, we will copy off-heap registration queue values to heap to avoid
complicated off-heap reference counting. Since the registration queue is only a
temporary construct during client registration, the overhead should not be significant.

@param event The InternalCacheEvent whose value will be copied to the heap if need be
geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientRegistrationEventQueueManager.java