anchor.diff:          (kell (setf (process kell) null-process))
           (parallel-composition (setf (kells (process kell))
                                       (delete process (kells (process kell))))
  -                              (case (length (map-parallel-composition #'identity
  -                                                                      (process kell)))
  +                              (case (length (map-parallel-composition
  +                                             #'identity
  +                                             (process kell)))
                                   (0 (setf (process kell) null-process))
  -                                (1 (setf (process kell) (car (map-parallel-composition #'identity
  -                                                                                          (process kell))))))))
  -      (error "The (kell) process ~a is not contained in ~a, and thus can not be removed."
  +                                (1 (setf (process kell)
  +                                         (car (map-parallel-composition
  +                                               #'identity
  +                                               (process kell))))))))
  +      (error "The (kell) process ~a is not contained in ~a, and thus can not ~
  +              be removed."
                process (process kell))))
     (:method ((process trigger) kell)
       (if (find process (triggers-in (process kell)))
  
positive.code:              (triggers pc) (cons process-b (triggers process-a))
               (primitives pc) (primitives process-a))
        pc)))
  
  #| not sure if we ever need this – annotated messages aren't a thing so much as a category
  (defmethod annotated-messages ((kell kell))
    "Collects the set of local, up, down, and subkell messages for the given kell."
    (append (messages kell)
            (mapcar (lambda (message) (annotate-message message 'up))
                    (messages (parent kell)))
            (mapcar (lambda (message) (annotate-message message 'down))
                    (mapcan #'messages (subkells kell)))
            (subkells kell)))
  |#
  
  #| new definition in syntax.lisp
  (defgeneric add-process (kell process)
    (:documentation "Adds a new process to a kell and triggers an attempt to match
                    on the new process."
    (:method :before (kell process)
      (push-process process kell))
    (:method ((kell kell) (process trigger))
      (match (pattern trigger) (annotated-messages kell)))
    (:method ((kell kell) (process message))
      (match (patterns kell) (annotated-messages kell)))
    (:method ((kell kell) (process parallel-composition))
      (match (patterns kell) (annotated-messages kell)))))
  |#
negative.code: (in-package :kilns)
  
  (defclass process ()
    ;; FIXME: really only a property of _active_ processes …
    ((parent :accessor parent)))
  
  (deftype generic-process ()
    "This allows us to use various primitives as processes."
  