anchor.diff:    "reads a key-value pair into the hash"
     (declare (type buffer buffer))
     (loop until (progn (skip-spaces buffer)
  -		     (char= (fetch-char buffer) #\})) ; we may fetch-char here, as the character is a #\, to be skipped if it is not a #\}
  +		     (eql (fetch-char buffer) #\})) ; we may fetch-char here, as the character is a #\, to be skipped if it is not a #\}
        collect (cons (read-key buffer) (read-value buffer))))
   
   (defun read-partial-object (buffer tree)
  
positive.code: 	   (type character last-char))
    (decr-char buffer)
    (loop do (next-char/ buffer)
       until (char= (current-char buffer) last-char)))
  
  (defun skip-until* (buffer &rest chars)
    "Skips characters until one of the characters in <chars> has been found.  The character which was found is not read from the buffer"
    (declare (type buffer buffer))
    (loop until (find (current-char buffer) chars :test #'char=)
       do (next-char buffer)))
  
  (defun skip-spaces (buffer)
    "Skips spaces, tabs and newlines until a non-space character has been found"
    (loop while (find (current-char buffer) +space-characters+ :test #'char=)
       do (next-char buffer)))
  
  ;; (defmacro skip-spaces (buffer)
  
negative.code:   (declare (type buffer buffer)
  	   (type (or cons nil) tree))
    (loop until (progn (skip-spaces buffer)
  		     (eql (fetch-char buffer) #\})) ; we may fetch-char here, as the character is a #\, to be skipped if it is not a #\}
       append (multiple-value-bind (found-p key)
  		(read-partial-key buffer tree)
  	      (if found-p
  