anchor.diff:      (if (> (length str) 0)
           (if (char= (char str 0)
                      #\*)
  -            (list (mkvar (intern (string-upcase (subseq str 1)) :keyword) t))
  +            (list (mkvar (intern-keyword (subseq str 1)) t))
               (let ((pos (position #\: str)))
                 (if pos
                     (let ((rest (if (char= (elt str (1+ pos)) #\()
  
positive.code: 
  (defun parse-path (str &optional varspecs)
    (flet ((mkvar (name &optional wildcard)
             (let* ((spec (intern (string-upcase name) :keyword))
                    (parse-fun (getf varspecs spec )))
               (if parse-fun
                   (make-instance (if wildcard
  
negative.code: 
  
  (in-package #:routes)
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;; macros
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
  (defmacro intern-keyword (name)
    `(intern (
  	    #+allegro
  	    ,(ecase excl:*current-case-mode*
  	       (:case-sensitive-lower 'string-downcase)
  	       (:case-insensitive-upper 'string-upcase))
  	    #-allegro
  	    ,'string-upcase
  	    ,name) :keyword))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;; interface
  