anchor.diff:    (remove-duplicates (loop for list in lists
   			when (first list)
   			collect (first list))
  -		     :test #'string=))
  +		     :test #'char=))
   
   (defun build-tree (lists)
     "Builds a tree from a range of lists and a function to compare its elements by"
  
positive.code:   (declare (type buffer buffer))
    (skip-to buffer #\:)
    (skip-spaces buffer)
    (let ((meaning (fetch-char buffer)))
      (cond ((string= meaning #\")
  	   (parse-string buffer))
  	  ((string= meaning #\{)
  	   (read-object buffer))
  	  ((string= meaning #\[)
  	   (read-array buffer))
  	  ((char= meaning #\t)
  	   (incf (buffer-index buffer) 3)
  	   T)
  	  ((char= meaning #\f)
  	   (incf (buffer-index buffer) 4)
  	   nil)
  	  ((char= meaning #\n)
  	   (incf (buffer-index buffer) 3)
  	   nil)
  	  (T
  	   (read-number buffer)))))
  
  (defun skip-value (buffer)
    "Skips a value from the stream.
  
negative.code:   (loop 
       do (progn (skip-value buffer)
  	       (skip-spaces buffer))
       until (char= (fetch-char buffer) #\])) ; we may fetch-char here, as the character is a , to be skipped if it is not a ]
    )
  
  (defun parse-string (buffer)
  