/** INTERNAL: If any of the references objects has changed, write out all the keys. */
  public void writeFromObjectIntoRowForUpdate(WriteObjectQuery writeQuery, AbstractRecord row)
      throws DescriptorException {
    if (!this.isAttributeValueInstantiatedOrChanged(writeQuery.getObject())) {
      return;
    }

    AbstractSession session = writeQuery.getSession();

    if (session.isUnitOfWork()) {
      // PRS2074 fix for "traditional" Indirection
      Object collection1 =
          this.getRealCollectionAttributeValueFromObject(writeQuery.getObject(), session);
      Object collection2 =
          this.getRealCollectionAttributeValueFromObject(writeQuery.getBackupClone(), session);
      if (this.compareObjectsWithoutPrivateOwned(collection1, collection2, session)) {
        return; // nothing has changed - don't put anything in the row
      }
    }
    this.writeFromObjectIntoRow(writeQuery.getObject(), row, session);
  }