code: private void processReturnOperations(final ResponseMessage response) {
      final List<OperationMessage> ops = response.getOperations();
  
      // If there are no observable effects, this will be null
      if (ops == null) {
        return;
      }
  
      for (final OperationMessage op : ops) {
        final SimpleProxyId<?> id = this.getId(op);
        WriteOperation[] toPropagate = null;
  
        // May be null if the server is returning an unpersisted object
        final WriteOperation effect = op.getOperation();
        if (effect != null) {
          switch (effect) {
            case DELETE:
              toPropagate = DELETE_ONLY;
              break;
            case PERSIST:
              toPropagate = PERSIST_AND_UPDATE;
              break;
            case UPDATE:
              toPropagate = UPDATE_ONLY;
              break;
            default:
              // Should never reach here
              throw new RuntimeException(effect.toString());
          }
        }
        this.processReturnOperation(id, op, toPropagate);
      }
  
      assert this.state.returnedProxies.size() == ops.size();
    }
docs: Process an array of OperationMessages.