anchor.diff:  
   ;;; pbind
   
  -;; FIX: maybe an empty pbind (i.e. `(pbind)`) shouldn't return just nils? maybe just empty events?
   (defclass pbind (pattern)
     ((pairs :initarg :pairs :accessor :pairs :initform (list)))
     (:documentation "A pbind associates keys with values for a pattern stream that returns events."))
  
positive.code: 
  (defmethod next-n ((pattern pattern) (n number))
    (next-n (as-pstream pattern) n))
  
  ;;; pstream
  
  
negative.code:      (defclass ,(intern (concatenate 'string (symbol-name name) "-PSTREAM")) (,name pstream)
         ())))
  
  (defparameter *max-pattern-yield-length* 64
    "The maximum amount of events or values that will be used by patterns like pshift, etc, in order to prevent hangs caused by infinite-length patterns.")
  
  ;;; pattern
  
  (defclass pattern ()
  