def copy_volatile_attributes(other)
      pas = self.class.volatile_nondomain_attributes
      return if pas.empty?
      pas.each do |pa|
        val = send(pa)
        oval = other.send(pa)
        if val.nil? then
          # Overwrite the current attribute value.
          set_property_value(pa, oval)
          logger.debug { "Set #{qp} volatile #{pa} to the fetched #{other.qp} database value #{oval.qp}." }
        elsif oval != val and pa == :identifier then
          # If this error occurs, then there is a serious match-merge flaw. 
          raise DatabaseError.new("Can't copy #{other} to #{self} with different identifier")
        end
      end
      logger.debug { "Merged auto-generated attribute values #{pas.to_series} from #{other.qp} into #{self}..." }
    end
def copy_volatile_attributes(other)
      pas = self.class.volatile_nondomain_attributes
      return if pas.empty?
      pas.each do |pa|
        val = send(pa)
        oval = other.send(pa)
        if val.nil? then
          # Overwrite the current attribute value.
          set_property_value(pa, oval)
          logger.debug { "Set #{qp} volatile #{pa} to the fetched #{other.qp} database value #{oval.qp}." }
        elsif oval != val and pa == :identifier then
          # If this error occurs, then there is a serious match-merge flaw. 
          raise DatabaseError.new("Can't copy #{other} to #{self} with different identifier")
        end
      end
      logger.debug { "Merged auto-generated attribute values #{pas.to_series} from #{other.qp} into #{self}..." }
    end
Sets the {Propertied#volatile_nondomain_attributes} to the other fetched value,
 if different.

 @param [Jinx::Resource] other the fetched domain object reflecting the database state