anchor.diff:        (otherwise       (error "something went very wrong"))))
   
   (defun generate-match-code (exp)
  -  `(when (and list ,(match-test (car exp)))
  -        ,(if (not (cdr exp)) 't
  +  `(when ,(match-test (car exp))
  +         ,(if (not (cdr exp)) 't
               `(let ((list (cdr list)))
                     ,(match (cdr exp))))))
   
   (defun generate-atom-code (exp)
  -  `(when (and list (equalp ,(car exp) (car list)))
  +  `(when (equalp ,(car exp) (car list))
           ,(if (not (cdr exp)) 't
              `(let ((list (cdr list)))
                    ,(match (cdr exp))))))
  
positive.code:                        ((symbol-eq 'quote (car exp)) (return-from expand-macros exp))
                         (t (cons (car exp) (mapcar #'expand-macros (cdr exp))))))
             (awhen (gethash (string (car exp)) clauses)
                    (expand-macros (funcall it (cdr exp))))
             (multiple-value-bind (a b) (macroexpand-1 exp)
                (when b (expand-macros a)))
             (mapcar #'expand-macros exp))
  
negative.code: 
  ;; TODO
  ;; [ ] fill out the README with examples and documentation
  ;; [ ] key macros
  ;; [ ] defmacro redefinition
  
  (defparameter clauses (make-hash-table :test #'equalp))
  