anchor.diff:      
       (ensure-success (snd-pcm-sw-params-malloc (swparams pcs)))
       (ensure-success (snd-pcm-sw-params-current (deref (handle pcs)) (deref (swparams pcs))))
  -    (when start-threshold
  -      (ensure-success (snd-pcm-sw-params-set-start-threshold (deref (handle pcs)) (deref (swparams pcs)) start-threshold)))
       (ensure-success (snd-pcm-sw-params (deref (handle pcs)) (deref (swparams pcs))))
       pcs))
  +
  +(defmethod alsa-reopen ((pcs pcm-stream) device buffer-size element-type &key direction (sample-rate 44100) (channels-count 2))
  +  (unless (and (equal device (device pcs))
  +	       (= buffer-size (buffer-size pcs))
  +	       (equal element-type (element-type pcs))
  +	       (eql direction (direction pcs))
  +	       (= sample-rate (sample-rate pcs))
  +	       (= channels-count (channels-count pcs)))
  +    (when (eql (status pcs) :open)
  +      (alsa-close pcs))
  +    (alsa-open device buffer-size element-type :direction direction :sample-rate sample-rate :channels-count channels-count
  +	       :existing-stream pcs)))
   
   (defmethod ref ((pcm pcm-stream) position)
     (mem-aref (buffer pcm) (alsa-element-type (element-type pcm)) position))
  
positive.code: 
  (defclass pcm-stream ()
    ((handle :reader handle :initform (foreign-alloc :pointer :initial-contents (list (null-pointer))))
     (params :reader params :initform (foreign-alloc :pointer :initial-contents (list (null-pointer))))
     (swparams :reader swparams :initform (foreign-alloc :pointer :initial-contents (list (null-pointer))))
     (pcm-format :reader pcm-format :initarg :pcm-format :initform :snd-pcm-format-s16-le)
  
negative.code:   (setf (mem-aref (buffer pcm) (alsa-element-type (element-type pcm)) position) value))
  
  (defmethod alsa-close ((pcm pcm-stream))
    (when (eq (status pcm) :open)
      (snd-pcm-drain (deref (handle pcm)))
      (snd-pcm-close (deref (handle pcm))))
    (setf (status pcm) :closed)
    pcm)
  
  (defmethod alsa-write ((pcm pcm-stream))
  