anchor.diff:  (defun merge-bib-entries (a b)
     "Return a fresh bib entry that merges A and B."
     (let ((entry (make-bib-entry)))
  -    (loop for key being each hash-key in a
  -	  and value being each hash-value in a
  -	  do (setf (gethash key entry) value))
  -    (loop for key being each hash-key in b
  -	  and value being each hash-value in b
  -	  do (unless (gethash key entry)
  -	       (setf (gethash key entry) value)))
  +    (setf (bib-entry-type entry) (bib-entry-type a)
  +	  (bib-entry-cite-key entry) (bib-entry-cite-key a))
  +    (loop for key being each hash-key in (bib-entry-dict a)
  +	  and value being each hash-value in (bib-entry-dict a)
  +	  do (setf (bib-entry-ref key entry) value))
  +    (loop for key being each hash-key in (bib-entry-dict b)
  +	  and value being each hash-value in (bib-entry-dict b)
  +	  do (unless (bib-entry-ref key entry)
  +	       (setf (bib-entry-ref key entry) value)))
       entry))
   
   (defun get-merged-bib-entry (key)
  
positive.code:   (read-bib-database s))
  
  (let ((*bibtex-split-initials* t))
    (parse-bibtex-name-list (gethash 'editor (gethash "johnson-trick-96" *bib-database*))))
  
  (defun show-author (id)
    (let ((*bibtex-split-initials* t))
      (parse-bibtex-name-list (gethash "author" (gethash id *bib-database*)))))
  
  (let ((*bibtex-split-initials* t))
    (remove-duplicates
     (sort 
      (loop for entry being each hash-value in *bib-database*
  	  appending (mapcar #'(lambda (name) (format-bibtex-name nil "{f.~}{vv~}{ll}{, jj}" name))
  			    (parse-bibtex-name-list (gethash "author" entry))))
      #'string<=)
     :test #'equal))
     
  
negative.code:   (format stream "~&@~A{~A"
  	  (bib-entry-type entry)
  	  (bib-entry-cite-key entry))
    (loop for field being each hash-key in (bib-entry-dict entry)
  	and value being each hash-value in (bib-entry-dict entry)
  	do (format stream ",~%  ~A = {~A}" field value))
    (format stream "~%}~%"))
  
  