anchor.diff:                   :pattern pattern
                    :repeats repeats))
   
  -(defmethod next ((pattern pr))
  +(defmethod next ((pattern pr-pstream))
     (if (or (null (slot-value pattern 'cv))
             (<= (slot-value pattern 'crr) 0))
         (progn
  
positive.code:                  :list list
                   :remaining remaining))
  
  (defmethod next ((pattern prand))
    (alexandria:random-elt (slot-value pattern 'list)))
  
  ;;; pfunc
  
  ;; (defclass pfunc (pattern)
  ;;   ((func :initarg :func :accessor :func))
  ;;   (:documentation "A pfunc returns the result of the provided function FUNC."))
  
  (defpattern pfunc (pattern)
    ((func :initarg :func :accessor :func))
  
negative.code:                  :list list
                   :remaining (when repeats (* repeats (length list)))))
  
  (defmethod next ((pattern pseq-pstream))
    (nth (mod (slot-value pattern 'number) (length (slot-value pattern 'list)))
         (slot-value pattern 'list)))
  
  ;;; pk
  
  (defpattern pk (pattern)
    ((key :initarg :key :accessor :key)
  