anchor.diff:  
   (defun transform-string-token (fn value)
     "Transforms building token value into one or more tokens in
  -   accordance to it's value.  For example, 'литA' is transformed to
  +   accordance to its value.  For example, 'литA' is transformed to
      tokens 'лит' (building part) and 'А' (letter).
     "
  -  (macrolet ((emit (value type) `(funcall fn ,value ,type)))
  +  (flet ((emit (value type) (funcall fn value type)))
       (cond ((building-synonym-p value)
              (emit value :building-part))
             ((and (= 4 (length value))
  
positive.code:                                          :field-name "addr:flats")
                :house-number ,(make-type-settings :pattern-simplifier #'get-house-number-pattern
                                                   :field-name "addr:housenumber")
                :house-number-prefix-strings ,(make-type-settings
                                               :pattern-simplifier #'get-house-number-prefix-strings
                                               :field-name "addr:housenumber")
                :house-number-inner-strings ,(make-type-settings
                                              :pattern-simplifier #'get-house-number-inner-strings
                                              :field-name "addr:housenumber")))
  
  (defstruct cluster
    "A cluster of values with the same pattern, i.e.  all six-digits
  
negative.code:                                                              token-type))))))
                    tokens)))
  
  (defun get-house-number-pattern (house-number fn)
    (dolist (number (get-house-number-sub-numbers house-number))
      (let ((house-number (join-house-number-tokens number))
            (pattern (join-house-number-parse number)))
        (funcall fn house-number pattern))))
  
  (defun get-house-number-strings (house-number fn)
    "Returns all strings from the house number."
    (dolist (number (get-house-number-sub-numbers house-number))
      (dolist (string (mapcar #'token-value
                              (remove-if-not #'(lambda (token)
                                                 (case (token-type token)
                                                   ((:string :letter :letter-or-building-part) T)
                                                   (otherwise nil)))
                                             number)))
        (funcall fn string string))))
  
  (defstruct type-settings
  