anchor.diff:    (:documentation "Return T if buf is empty."))
   
   
  -(defgeneric n-inserted (buf new)
  -  (:documentation "Notifies the insertion of new into buf."))
  +(defgeneric n-input (buf obj)
  +  (:documentation "Notifies that buf has received obj."))
   
   
  -(defgeneric n-removed (buf)
  -  (:documentation "Notifies the removal of the first element of
  -  buf.
  -  Returns: the removed element.
  -  Signals: error-empty."))
  +(defgeneric n-output (buf)
  +  (:documentation "Notifies that buf should perform output."))
   
  -
  -(defgeneric n-input-bandwidth-changed (buf new-bw)
  -  (:documentation "Notifies that buf's new input bandwidth has the new
  -  value new-bw.
  -  Returns: nil
  -  Signals: error-bad-value."))
  -
  -
  -(defgeneric n-output-bandwidth-changed (buf new-bw)
  -  (:documentation "Notifies that buf's new output bandwidth has the
  -  new value new-bw.
  -  Returns: nil
  -  Signals: error-bad-value."))
  -
  -
  -(defgeneric n-input-started (buf obj)
  -  (:documentation "Notifies that the input process of obj into buf has
  -  started."))
   
   
   
  
positive.code: ; n-output-should-end
  
  
  (in-package :de-sim.buffer)
  
  
  (defgeneric fits? (buf obj)
  
negative.code:   ((de-sim.core:description
      :initform "buffer")
     (de-sim.core:notifications
      :initform (list #'n-input
  		    #'n-output))
     (de-sim.core:subscribable-states
      :initform (list :input
  		    :output
  		    :full
  		    :empty))
     (elements
      :initform (list)
      :accessor elements-of
      :type list)
     (capacity
      :initargs :capacity
      :accessor capacity-of
      :type (or (integer 0)
  	      (eql :keyword)))))
  
  
  (defmethod fits? ((buf buffer) (obj object))
  