@Override
  public void toData(DataOutput out,
      SerializationContext context) throws IOException {
    super.toData(out, context);
    DataSerializer.writeObject(getKey(), out);
    DataSerializer.writeObject(cbArg, out);
    out.writeByte(op.ordinal);
    if (bridgeContext != null) {
      DataSerializer.writeObject(bridgeContext, out);
    }
    if (originalSender != null) {
      DataSerializer.writeObject(originalSender, out);
    }
    DataSerializer.writeObject(eventId, out);

    // this will be on wire for cqs old value generations.
    if (hasOldValue) {
      out.writeByte(oldValueIsSerialized ? 1 : 0);
      byte policy = DistributedCacheOperation.valueIsToDeserializationPolicy(oldValueIsSerialized);
      DistributedCacheOperation.writeValue(policy, getOldValObj(), getOldValueBytes(), out);
    }
    DataSerializer.writeObject(expectedOldValue, out);
    DataSerializer.writeObject(versionTag, out);
  }
This method is called upon receipt and make the desired changes to the region. Note: It is very
important that this message does NOT cause any deadlocks as the sender will wait indefinitely
for the acknowledgement
geode-core/src/main/java/org/apache/geode/internal/cache/tx/RemoteDestroyMessage.java