anchor.diff:      (unless (zerop (length (wookie-state-routes *state*)))
         (loop for i from 0
               for route across (wookie-state-routes *state*) do
  -        (when (and (eq (getf route :method) method)
  +        (when (and (method-equal (getf route :method) method)
                      (string= (getf route :resource-str) resource-str))
             (setf (aref (wookie-state-routes *state*) i) new-route
                   route-found t)
  
positive.code:   (log:debu1 "(route) Clear route ~s" resource-str)
    (let ((new-routes (delete-if
                        (lambda (route)
                          (and (eq (getf route :method) method)
                               (string= (getf route :resource-str) resource-str)))
                        (wookie-state-routes *state*))))
      (setf (wookie-state-routes *state*) (alexandria:copy-array new-routes :fill-pointer t :adjustable t))))
  
negative.code:   (vector-push-extend new-route (wookie-state-routes *state*))
    (length (wookie-state-routes *state*)))
  
  (defun method-equal (method1 method2)
    "Test two route methods (kewords or lists of keywords) for equality."
    (if (eq (type-of method1) (type-of method2))
        (etypecase method1
          (keyword (eq method1 method2))
          (list (equal (sort (copy-list method1) #'string<)
                       (sort (copy-list method2) #'string<))))
        nil))
  
  (defun upsert-route (new-route)
    "Add a new route to the table. If a route already exists with the same method
     and resource string, it is replaced with the new one in the same position the 
  