anchor.diff:  (defun elements-from-json (elements-json)
     (loop for element in (cl-json:decode-json-from-string elements-json)
           collect (let ((object-type (cdr (assoc :type element))))
  -                  (cond ((equal "link" object-type)
  -                         (make-instance 'link-hint
  -                                        :hint (cdr (assoc :hint element))
  -                                        :identifier (cdr (assoc :hint element))
  -                                        :url (cdr (assoc :href element))
  -                                        :body (plump:text (plump:parse (cdr (assoc :body element))))))
  -                        ((equal "button" object-type)
  -                         (make-instance 'button-hint
  -                                        :identifier (cdr (assoc :identifier element))
  -                                        :hint (cdr (assoc :hint element))
  -                                        :body (plump:text (plump:parse (cdr (assoc :body element))))))
  -                        ((equal "input" object-type)
  -                         (make-instance 'input-hint
  -                                        :identifier (cdr (assoc :identifier element))
  -                                        :hint (cdr (assoc :hint element))))
  -                        ((equal "textarea" object-type)
  -                         (make-instance 'textarea-hint
  -                                        :identifier (cdr (assoc :identifier element))
  -                                        :hint (cdr (assoc :hint element))))))))
  +                  (str:string-case object-type
  +                    ("link"
  +                     (make-instance 'link-hint
  +                                    :hint (alex:assoc-value element :hint)
  +                                    :identifier (alex:assoc-value element :hint)
  +                                    :url (alex:assoc-value element :href)
  +                                    :body (plump:text (plump:parse (alex:assoc-value element :body)))))
  +                    ("button"
  +                     (make-instance 'button-hint
  +                                    :identifier (alex:assoc-value element :identifier)
  +                                    :hint (alex:assoc-value element :hint)
  +                                    :body (plump:text (plump:parse (alex:assoc-value element :body)))))
  +                    ("input"
  +                     (make-instance 'input-hint
  +                                    :identifier (alex:assoc-value element :identifier)
  +                                    :hint (alex:assoc-value element :hint)))
  +                    ("textarea"
  +                     (make-instance 'textarea-hint
  +                                    :identifier (alex:assoc-value element :identifier)
  +                                    :hint (alex:assoc-value element :hint)))
  +                    ("img"
  +                     (make-instance 'image-hint
  +                                    :identifier (alex:assoc-value element :identifier)
  +                                    :url (alex:assoc-value element :src)
  +                                    :alt (alex:assoc-value element :alt)
  +                                    :hint (alex:assoc-value element :hint)))))))
   
   (define-class hint ()
     ((hint "")
      (identifier "")
  +   ;; TODO: Move to `link-hint' or `button-hint'? Maybe add an intermediate class?
      (body ""
            :documentation "The body of the anchor tag."))
     (:accessor-name-transformer #'class*:name-identity))
  
positive.code: (defclass input-hint (hint) ())
  
  (defclass textarea-hint (hint) ())
  
  (defmethod object-string ((link-hint link-hint))
    (url link-hint))
  
negative.code:                          (rem n 26)))) ""))
  
    (add-stylesheet)
    (hints-add (qsa document (list "a" "button" "input" "textarea" "img"))))
  
  (define-parenscript remove-element-hints ()
    (defun hints-remove-all ()
  