public function appendNode(DOMElement $changeset_node, $tracker_id, $artifact_id, array $row)
 {
     $new_attachment = $this->extractFirstDifference($row['old_value'], $row['new_value']);
     if ($new_attachment) {
         $dar = $this->dao->searchFile($artifact_id, $new_attachment, $row['mod_by'], $row['date']);
         if ($dar && $dar->rowCount() == 1) {
             $row_file = $dar->current();
             $field_node = $this->node_helper->createElement('field_change');
             $field_node->setAttribute('field_name', 'attachment');
             $field_node->setAttribute('type', self::TV5_TYPE);
             $field_node->appendChild($this->getNodeValueForFile($row_file['id']));
             $this->appendPreviousAttachements($field_node, $artifact_id, $row['date'], $row['old_value']);
             $changeset_node->appendChild($field_node);
         } else {
             throw new Exception_TV3XMLAttachmentNotFoundException('new: ' . $new_attachment);
         }
     } else {
         $deleted_attachment = $this->extractFirstDifference($row['new_value'], $row['old_value']);
         throw new Exception_TV3XMLAttachmentNotFoundException('del: ' . $deleted_attachment . ' n:' . $row['new_value'] . ' o:' . $row['old_value']);
     }
 }