anchor.diff:    (if (isource-array-slot-p hidden-slot)
         `(defun ,original-slot-name (input-source index)
            (ensure-n-long (,(first hidden-slot) input-source)
  -                          (+ index 1)
  -                          (,(control-constructor-name control-type)))
  +                        (+ index 1)
  +                        (,(control-constructor-name control-type)))
            (,(control-data-acc-name control-type)
              (aref (,(first hidden-slot) input-source) index)))
         `(defun ,original-slot-name (input-source)
  
positive.code:                   types))
  
         ,@(gen-add-methods name types hidden-slot-names lengths
                             original-slot-names)
  
         (defmethod get-control ((input-source ,name)
                                 &optional slot-name index allow-arr-result)
  
negative.code: 
         (defmethod listen-to ((listener event-listener) (input-source ,name)
                               slot-name &optional index)
           (let ((control/s (get-control input-source slot-name index t)))
             (if (arrayp control/s)
                 (loop :for control :across control/s :do
                    (listen-to-control control/s listener))
                 (listen-to-control control/s listener)))))))
  
  ;;----------------------------------------------------------------------
  