anchor.diff:      :accessor standard-talent-body)
      (function
       :initarg :function
  -    :accessor standard-talent-function)
  -   (rank
  -    :initarg :rank
  -    :initform (vector nil)
  -    :accessor standard-talent-rank))
  +    :accessor standard-talent-function))
     (:metaclass sb-mop:funcallable-standard-class))
   
   (defclass standard-talent-property ()
  
positive.code: 				   :name name
  				   :lambda-list lambda-list
  				   :body body
  				   :function body
  				   :rank (make-array (length lambda-list) :initial-element nil))))
  	(loop 
  	   for specializer in specializers
  	   for i upto (1- (length specializers))
  	   do (pushnew (make-instance 'standard-talent-property
  				      :name name
  				      :role i
  				      :talent-pointer talent) 
  		       (sheep-direct-participations specializer)))
  	talent)))
  
  
  ;;;
  ;;; Talent dispatch
  
negative.code: 		       for participation in (sheep-direct-participations arg)
  		       when (and (eql selector (name participation))
  				 (eql index (role participation)))
  		       do (pushnew (talent-pointer participation) 
  				   discovered-talents)
  		       do (setf (elt (standard-talent-rank (talent-pointer participation)) index)
  				position)
  		       if (or (fully-specified-p (standard-talent-rank (talent-pointer participation)))
  			      (< (calculate-rank (standard-talent-rank (talent-pointer participation)))
  				 (calculate-rank (standard-talent-rank most-specific-talent))))
  		       do (setf most-specific-talent (talent-pointer participation)))
  		    (add-ancestors-to-ordering-stack arg ordering-stack)))))
      (mapcar #'reset-talent-rank discovered-talents)
      most-specific-talent))
  
  (defun add-ancestors-to-ordering-stack (arg ordering-stack)
    (loop 
       for ancestor in (remove arg (compute-sheep-hierarchy-list arg))
       do (push ancestor ordering-stack)))
  
  (defun fully-specified-p (rank)
    (loop for item across rank
  