anchor.diff:            (homepage-url ,(gethash "homepage_url" json))
             (browser-action ,(make-browser-action json))
             (permissions (quote ,(gethash "permissions" json)))
  -          (content-scripts (list ,@(mapcar (lambda (content-script-hash)
  -                                             (apply #'make-content-script
  -                                                    (alex:hash-table-plist content-script-hash)))
  +          (content-scripts (list ,@(mapcar #'make-content-script
                                              (gethash "content_scripts" json))))))
          (defmethod initialize-instance :after ((extension ,lispy-name) &key)
            ;; This is to simulate the browser action on-click-popup behavior.
  
positive.code:                                      :allow-list (match-patterns script))
           (user-scripts script)))))
  
  (defun make-content-script (&key (matches (error "Matches key is mandatory.")) js css)
    "Create a Lisp-friendly content script representation of our WebExtension keys.
  
  MATCHES, JS, and CSS are all keys of the \"content_scripts\" manifest.json keys:
  
negative.code:                    :default-title (when browser-action
                                      (gethash "default_title" browser-action))
                     :default-icon default-icon
                     :default-dark-icon (when (hash-table-p max-icon)
                                          (or (gethash "dark" max-icon)
                                              (gethash "light" max-icon)))
                     :default-light-icon (when (hash-table-p max-icon)
                                           (or (gethash "light" max-icon)
                                               (gethash "dark" max-icon))))))
  
  (define-class browser-action ()
    ((default-popup nil
  