@Override
  public Object put(Object key, Object value, byte[] deltaBytes, EntryEventImpl event, Operation op,
      boolean requireOldValue, Object expectedOldValue, Object callbackArg, boolean isCreate) {
    recordTXOperation(ServerRegionOperation.PUT, key, value, deltaBytes, event.getEventId(), op,
        requireOldValue, expectedOldValue, callbackArg, isCreate);
    Operation operation = op;
    if (!isCreate && region.getDataPolicy() == DataPolicy.EMPTY && op.isCreate()
        && op != Operation.PUT_IF_ABSENT) {
      operation = Operation.UPDATE;
    }

    if (region == null) {
      return PutOp.execute(pool, regionName, key, value, deltaBytes, event, operation,
          requireOldValue, expectedOldValue, callbackArg, pool.getPRSingleHopEnabled());
    } else {
      return PutOp.execute(pool, region, key, value, deltaBytes, event, operation,
          requireOldValue, expectedOldValue, callbackArg, pool.getPRSingleHopEnabled());
    }
  }
Do not call this method if the value is Delta instance. Exclicitly passing
<code>Operation.CREATE</code> to the <code>PutOp.execute()</code> method as the caller of this
method does not put Delta instances as value.
geode-core/src/main/java/org/apache/geode/cache/client/internal/ServerRegionProxy.java