@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());
    notificationOnly = in.readBoolean();
    bridgeContext = ClientProxyMembershipID.readCanonicalized(in);
    originalSender = DataSerializer.readObject(in);
    eventId = DataSerializer.readObject(in);
    expectedOldValue = DataSerializer.readObject(in);

    final boolean hasFilterInfo = ((flags & HAS_FILTER_INFO) != 0);
    if (hasFilterInfo) {
      filterInfo = new FilterRoutingInfo();
      InternalDataSerializer.invokeFromData(filterInfo, in);
    }

    versionTag = DataSerializer.readObject(in);
  }
This method is called upon receipt and make the desired changes to the PartitionedRegion 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/partitioned/DestroyMessage.java