anchor.diff:    (:metaclass interface-class))
   
   (define-class user-script (renderer-user-script nfiles:data-file nyxt-remote-file)
  -  ((code
  -    :unbound
  -    :type (maybe string))
  +  ((code "" :type (maybe string))
      (version "")
      (description "")
      (namespace "")
      (world-name
  -    :unbound
  +    nil
       :type (maybe string)
       :documentation "The JavaScript world to run the `code' in.")
      (requires
       nil
       :type (maybe hash-table))
      (include
  -    :unbound
  +    '("http://*/*" "https://*/*")
       :type list-of-strings)
      (exclude
  -    :unbound
  +    '()
       :type list-of-strings)
      (all-frames-p
  -    :unbound
  +    t
       :type boolean
       :documentation "Whether to run on both top-level frame and all the subframes.
   If false, runs on the toplevel frame only.")
      (run-at
  -    :unbound
  +    :document-end
       :type (member :document-start :document-end :document-idle)
       :documentation "When to run the script.
   Possible values:
  
positive.code:     (alex:write-string-into-file (nfiles:url-content script) destination :if-exists :supersede)))
  
  (defmethod parse-user-script ((script user-script))
    (let ((code (files:content script)))
      (or
       (sera:and-let* ((start-position (search "// ==UserScript==" code))
                       (end-position (search "// ==/UserScript==" code))
  
negative.code:                               ("document-idle" :document-idle)
                                (otherwise :document-end)))
             code-with-requires)))
       (setf (code script) code))))
  
  (defmethod customize-instance :after ((script user-script) &key)
    (parse-user-script script))
  
  (defmethod nfiles:deserialize ((profile nyxt-profile) (script user-script) raw-content &key)
    "If the script is not in the UserScript format, the raw content is used as is
  and only the `code' slot is set."
    (declare (ignorable profile))
    (progn
      (setf (code script) (alex:read-stream-content-into-string raw-content))
      (parse-user-script script)))
  