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