anchor.diff:  (setf (documentation 'pbind 'type) (documentation 'pbind 'function))
   
   (defmethod print-object ((pbind pbind) stream)
  -  (format stream "#<~s~{ ~s ~s~}>" 'pbind (slot-value pbind 'pairs)))
  +  (format stream "(~s~{ ~s ~s~})" 'pbind (slot-value pbind 'pairs)))
   
   (defmacro pb (key &body pairs) ;; FIX: should automatically convert +, *, -, /, etc to their equivalent patterns.
     "pb is a convenience macro, wrapping the functionality of `pbind' and `pdef'. KEY is the name of the pattern (same as pbind's :pdef key or `pdef' itself), and PAIRS is the same as in regular pbind. If PAIRS is only one element, pb operates like `pdef', otherwise it operates like `pbind'.
  
positive.code:            ,(mapcar #'desugar-slot (remove-if #'state-slot-p slots))
             ,@(when documentation
                 `((:documentation ,documentation))))
           (defclass ,name-pstream (,name ,super-pstream)
             ,(mapcar #'desugar-slot (remove-if-not #'state-slot-p slots))
             (:documentation ,(format nil "pstream for `~a'." (string-downcase (symbol-name name)))))
  
negative.code: (defclass pbind-pstream (pbind pstream)
    ())
  
  (defmethod print-object ((pbind pbind-pstream) stream)
    (print-unreadable-object (pbind stream :type t)
      (format stream "~{~s ~s~^ ~}" (slot-value pbind 'pairs))))
  
  (defun as-pstream-pairs (pairs)
    (let ((results (list)))
  