anchor.diff:  		       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)))
  
positive.code:   t)
  
  (defun calculate-rank (rank)
    (reduce #'+ rank))
  
  (defun reset-talent-rank (talent)
    (loop for item across (standard-talent-rank talent)
       do (setf item nil)))
  
  ;dispatch(selector, args, n)
  ;  for each index below n
  ;    position := 0
  ;    push args[index] on ordering stack
  ;    while ordering stack is not empty
  ;      arg := pop ordering stack
  ;      for each talent-property on arg with selector and index
  ;        rank[talent-property's talent][index] := position
  ;        if rank[talent-property's talent] is fully specified
  ;          if no most specific talent
  ;             or rank[talent-property's talent] < rank[most specific talent]
  ;            most specific talent := talent-property's method
  ;      for each ancestor on arg's hierarchy-list
  ;        push ancestor on ordering stack
  ;      position := position + 1
  ;  return most specific talent-property
  ;FUCK YOU SLATE
  
  
  
negative.code: ;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (in-package :sheeple)
  
  ;;;
  ;;; Talent and participation (talent-property) base classes
  ;;;
  
  (defclass standard-talent ()
    ((name
  