anchor.diff:      :accessor talent-pointer)
      documentation))
   
  -(defun define-talent (&key name lambda-list specializers body)
  +(defmacro deftalent (name lambda-list &body body)
  +  `(create-talent
  +    )
  +  )
  +
  +(defun create-talent (&key name lambda-list specializers body)
     (let ((talent (make-instance 'standard-talent
   			       :name name
   			       :lambda-list lambda-list
  
positive.code: 			      (< (calculate-rank (standard-talent-rank (talent-pointer participation)))
  				 (calculate-rank (standard-talent-rank most-specific-talent))))
  		       do (setf most-specific-talent (talent-pointer participation)))
  		    (loop for ancestor in (compute-sheep-hierarchy-list arg)
  		       do (push ancestor ordering-stack))))))
      most-specific-talent))
  
  (defun fully-specified-p (rank)
  
negative.code: (defun find-most-specific-talent (selector &rest args)
    (let ((n (length args))
  	(most-specific-talent nil)
  	(ordering-stack nil)
  	(discovered-talents nil))
      (loop 
         for index upto (1- n)
         for position upto (1- n)
         do (let ((position 0))
  	    (push (elt args index) ordering-stack)
  	    (loop 
  	       while ordering-stack
  	       do (let ((arg (pop ordering-stack)))
  		    (loop
  		       for participation in (sheep-direct-participations arg)
  		       when (and (eql selector (name participation))
  				 (eql index (role participation)))
  		       do (setf (elt (standard-talent-rank (talent-pointer participation)) index)
  