@Override
  public void txApplyDestroy(Object key, TransactionId rmtOrigin, TXRmtEvent event,
      boolean needTokensForGII, Operation op, EventID eventId, Object aCallbackArgument,
      List<EntryEventImpl> pendingCallbacks, FilterRoutingInfo filterRoutingInfo,
      ClientProxyMembershipID bridgeContext, boolean isOriginRemote, TXEntryState txEntryState,
      VersionTag versionTag, long tailKey) {

    final boolean inRI = !needTokensForGII && lockRIReadLock();
    final boolean needRIDestroyToken = inRI && riCnt > 0;

    try {
      final boolean inTokenMode = needTokensForGII || needRIDestroyToken;
      entries.txApplyDestroy(key, rmtOrigin, event, inTokenMode, needRIDestroyToken, op,
          eventId, aCallbackArgument, pendingCallbacks, filterRoutingInfo, bridgeContext,
          isOriginRemote, txEntryState, versionTag, tailKey);
    } finally {
      if (inRI) {
        unlockRIReadLock();
      }
    }
  }
@param key the key of the entry to destroy
@param rmtOrigin true if transaction being applied had a remote origin
@param event filled in if operation performed
@param needTokensForGII true if caller has determined we are in destroy token mode and will
       keep us in that mode while this call is executing.
@param isOriginRemote whether the event originated in a peer or in this vm
@param txEntryState for passing up versionTag - only on near side
@param versionTag tag generated by txCoordinator - only on far side
@param tailKey tail (shadow) key generated by txCoordinator for WAN - only on farside
geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java