anchor.diff:  (defmethod as-pstream ((pattern t))
     pattern)
   
  +(defmethod as-pstream ((pattern pstream))
  +  pattern)
  +
   (defmethod as-pstream ((pattern pattern))
     (let ((slots (mapcar #'closer-mop:slot-definition-name (closer-mop:class-slots (class-of pattern)))))
       (apply #'make-instance
  
positive.code: 
  ;;; 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."))
  
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 ()
  