@Override
  public void fromData(DataInput in,
      DeserializationContext context) throws IOException, ClassNotFoundException {
    super.fromData(in, context);
    setKey(DataSerializer.readObject(in));
    cbArg = DataSerializer.readObject(in);
    op = Operation.fromOrdinal(in.readByte());
    if ((flags & HAS_BRIDGE_CONTEXT) != 0) {
      bridgeContext = DataSerializer.readObject(in);
    }
    if ((flags & HAS_ORIGINAL_SENDER) != 0) {
      originalSender = DataSerializer.readObject(in);
    }
    eventId = DataSerializer.readObject(in);

    // for old values for CQs
    if (hasOldValue) {
      // out.writeBoolean(this.hasOldValue);
      // below boolean is not strictly required, but this is for compatibility
      in.readByte();
      setOldValBytes(DataSerializer.readByteArray(in));
    }
    expectedOldValue = DataSerializer.readObject(in);
    // to prevent bug 51024 always call readObject for versionTag
    // since toData always calls writeObject for versionTag.
    versionTag = DataSerializer.readObject(in);
  }
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