anchor.diff:                                       :allow-list (match-patterns script))
            (user-scripts script)))))
   
  -(defun make-content-script (&key (matches (error "Matches key is mandatory.")) js css)
  +(defun make-content-script (json)
     "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:
  
positive.code:           (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)))
                                             (gethash "content_scripts" json))))))
         (defmethod initialize-instance :after ((extension ,lispy-name) &key)
           ;; This is to simulate the browser action on-click-popup behavior.
  
negative.code:                                                                   "<all_urls>" "*://*/*"))))
      (make-instance
       'content-script
       :match-patterns (mapcar sanitize-mozilla-regex (uiop:ensure-list (gethash "matches" json)))
       :files (append (uiop:ensure-list (gethash "js" json)) (uiop:ensure-list (gethash "css" json))))))
  
  
  (defun make-data-url (file &optional mime-type)
  