def merge_into_snapshot(other)
      if @snapshot.nil? then
        raise ValidationError.new("Cannot merge #{other.qp} content into #{qp} snapshot, since #{qp} does not have a snapshot.")
      end
      # the non-domain attribute => [target value, other value] difference hash
      delta = diff(other)
      # the difference attribute => other value hash, excluding nil other values
      dvh = delta.transform_value { |d| d.last }
      return if dvh.empty?
      logger.debug { "#{qp} differs from database content #{other.qp} as follows: #{delta.filter_on_key { |pa| dvh.has_key?(pa) }.qp}" }
      logger.debug { "Setting #{qp} snapshot values from other #{other.qp} values to reflect the database state: #{dvh.qp}..." }
      # update the snapshot from the other value to reflect the database state
      @snapshot.merge!(dvh)
    end
def merge_into_snapshot(other)
      if @snapshot.nil? then
        raise ValidationError.new("Cannot merge #{other.qp} content into #{qp} snapshot, since #{qp} does not have a snapshot.")
      end
      # the non-domain attribute => [target value, other value] difference hash
      delta = diff(other)
      # the difference attribute => other value hash, excluding nil other values
      dvh = delta.transform_value { |d| d.last }
      return if dvh.empty?
      logger.debug { "#{qp} differs from database content #{other.qp} as follows: #{delta.filter_on_key { |pa| dvh.has_key?(pa) }.qp}" }
      logger.debug { "Setting #{qp} snapshot values from other #{other.qp} values to reflect the database state: #{dvh.qp}..." }
      # update the snapshot from the other value to reflect the database state
      @snapshot.merge!(dvh)
    end
Merges the other domain object non-domain attribute values into this domain object's snapshot,
 An existing snapshot value is replaced by the corresponding other attribute value.

 @param [Jinx::Resource] other the source domain object
 @raise [ValidationError] if this domain object does not have a snapshot