anchor.diff:                   :type clause))
           (multiple-value-bind (include-clause opts)
               (if-let (clause (find :include opts :key #'car-safe))
  -              (let ((super (second clause)))
  -                (if (subtypep super '%read-only-struct env)
  -                    (values clause
  -                            (remove clause opts))
  -                    (error "Included type ~a is not read-only.
  -Read-only structs can only inherit from other read-only structs."
  -                           super)))
  +              (values clause (remove clause opts))
                 (values nil opts))
             `(defstruct (,name (:copier nil)
                                ,@opts
  
positive.code:     ((list)
       `(:include %read-only-struct))
      ((list* :include type slot-redefs)
       `(:include ,type
                  ,@(mapcar #'read-only-slotdef slot-redefs)))))
  
  
negative.code:   (flet ((car-safe (x) (if (consp x) (car x) nil)))
      (let ((docstring (and (stringp (first slots)) (pop slots))))
        (destructuring-bind (name . opts) (ensure-list name-and-opts)
          (when-let (clause (find :include opts :key #'car-safe))
            (error "Read-only struct ~a cannot use inheritance: ~s."
                   name clause))
          (when (find :copier opts :key #'ensure-car)
            (error "Read only struct ~a does not need a copier."
                   name))
  