anchor.diff:            (symbol-package symbol)))
   
   (eval-when (:compile-toplevel :load-toplevel :execute)
  -  (defun %make-decoder-flet (name)
  +  (defun %make-decoder-local-func (channel name next)
       (let* ((component (ensure-component name))
              (args (decoder-args-of component))
              (body (decoder-body-of component)))
         `(,name (,@args)
  -         (declare (ignorable ,@args))
  -         ,@body))))
  +         ,@(unless next
  +             `((declare (ignorable ,@args))))
  +         (flet ((stop-decoding ()
  +                  (return-from ,name))
  +                ,@(when next
  +                    `((decode-next (recipient packet)
  +                        (,next ,channel recipient packet)))))
  +           ,@body
  +           ,@(when next
  +               `((decode-next ,@args))))))))
   
   (eval-when (:compile-toplevel :load-toplevel :execute)
     (defun %make-decoder-call (name loop-var list-of-packets channel recipient packet)
  
positive.code:   (let ((channel (gensym "CHANNEL-"))
          (recipient (gensym "RECIPIENT-"))
          (packet (gensym "PACKET-"))
          (loop-var (gensym "LOOP-VAR-"))
          (list-of-packets (gensym "LIST-OF-PACKETS-"))
          (return-list (gensym "RETURN-LIST-"))
          (channel-type name)
          (recipient-type (extend-symbol name "-RECIPIENT"))
  
negative.code:             :initform nil)))
  (defchannel-decoder channel (ch rc pk)
    (setf (payload-of pk) (unserialize :payload)
          (recipient-of pk) rc)
    (return-packet pk))
  
  (defclass channel-packet ()
  