anchor.diff:  
   ;;;; ------------------------------------------------- pull-consumer -------
   
  -(defclass PULL-CONSUMER (consumer pull-consumer-servant)
  +(defclass PULL-CONSUMER (consumer
  +                         CosEventChannelAdmin:ProxyPullConsumer-servant)
     ())
   
   (define-method connect_pull_supplier ((self pull-consumer) supplier)
  
positive.code:   (let ((sreq (pending-pull self)))
      (if sreq
          (progn (setf (pending-pull self) nil)
                 (set-request-result sreq (list event))
                 (send-response sreq))
        (push event (events self)))))
  
  
  (define-method pull ((self pull-supplier))
    (if (events self)
        (pop (events self))
      (progn (setf (pending-pull self) *current-server-request*)
             'defer)))
  
  (define-method try_pull ((self pull-supplier))
    (let ((res (CORBA:Any :any-typecode CORBA:tc_null))
          (has-event nil))
      (when (events self)
        (setq res (pop (events self)))
  
negative.code: ;;;  ------------------------------------------------- event-channel -------
  
  (defclass EVENT-CHANNEL (CosEventChannelAdmin:EventChannel-servant)
    ((consumers           :initform '()   :accessor consumers-of)
     (suppliers           :initform '()   :accessor suppliers-of)
     (consumer-admin  )
     (supplier-admin  )))
  
  (define-method for_consumers ((servant event-channel))
    (with-cache-slot (servant consumer-admin)
      (make-instance 'consumer-admin :channel servant)))
  
  (define-method for_suppliers ((servant event-channel))
    (with-cache-slot (servant supplier-admin)
      (make-instance 'supplier-admin :channel servant)))
  
  (define-method destroy ((servant event-channel))
    (values))
  
  
  (defgeneric add-event (recipient event))
  
  (defmethod add-event ((ch event-channel) event)
    (mapc (lambda (subs) (add-event subs event))
          (consumers-of ch)))
  
  
  
  