anchor.diff:      (declare (ignore kell))
       '()))
   
  +(defgeneric activate-process (process kell)
  +  (:method ((process cons) (kell kell))
  +    (remove-process-from process kell)
  +    (add-process (eval process) kell))
  +  (:method ((process process) (kell kell))
  +    (setf (parent process) kell)
  +    (mapc #'push-event (collect-channel-names process kell)))
  +  (:method ((process kell) (kell kell))
  +    (call-next-method)
  +    (activate-process (process process) process))
  +  (:method ((process parallel-composition) (kell kell))
  +    (map-parallel-composition (lambda (sub-process)
  +                                (activate-process sub-process kell))
  +                              process))
  +  (:method ((process restriction) (kell kell))
  +    (let ((global-name (gensym (format nil "~a-" (name process)))))
  +      (remove-process-from process kell)
  +      (add-process (apply-restriction (name process)
  +                                      global-name
  +                                      (process process))
  +                   kell))))
  +
  +(defgeneric add-process (process kell)
  +  (:documentation "Pushes PROCESS onto the given KELL.")
  +  (:method (process kell)
  +    "Handles any other “primitive” processes (strings, numbers, etc.)"
  +    (declare (ignore process kell))
  +    (values))
  +  (:method ((process cons) (kell kell))
  +    (add-process (eval process) kell))
  +  (:method ((process restriction) (kell kell))
  +    (let ((global-name (gensym (format nil "~a-" (name process)))))
  +      (add-process (apply-restriction (name process) global-name (process process))
  +                   kell)))
  +  (:method ((process agent) (kell kell))
  +    (setf (process kell) (compose-processes process (process kell)))
  +    (activate-process process kell))
  +  (:method ((process parallel-composition) (kell kell))
  +    (map-parallel-composition (lambda (sub-process)
  +                                (add-process sub-process kell))
  +                              process))
  +  (:method ((process kell) (kell kell))
  +    (if (gethash (name process) (kells kell))
  +        (error "Can't have two kells with the same name (~a) in the same kell."
  +               (name process))
  +        (progn
  +          (call-next-method)
  +          (activate-process (process process) process)))))
  +
   (defun get-cpu-count ()
     (princ "How many CPUs/cores are in your computer? ")
     (read))
  
positive.code: (defgeneric substitute-variables (mapping process &optional ignored-vars)
    (:documentation "Replaces all the variables in place.")
    (:method (mapping process &optional ignored-vars)
      (values))
    (:method (mapping (process cons) &optional ignored-vars)
      (setf (car process) (replace-variables (car process) mapping ignored-vars)
  
negative.code:            (apply-restriction local-name global-name (process process) nil))
      process))
  
  (defgeneric collect-channel-names (process kell)
    (:documentation "This returns a list of events to add to the event queue.")
    (:method ((process process-variable) (kell kell))
  