anchor.diff:  ;;
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   (in-package :sheeple)
  +
  +;;;
  +;;; Talent and participation (talent-property) base classes
  +;;;
   
   (defclass standard-talent ()
     ((name
  
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:     :accessor talent-pointer)
     documentation))
  
  
  ;;;
  ;;; Talent definition
  ;;;
  
  (defmacro deftalent (name lambda-list &body body)
    `(create-talent
      )
    )
  
  (defun create-talent (&key name lambda-list specializers body)
    ;; This shit sucks. It doesn't make the talent a function, and it doesn't make sure that
    ;; one wasn't already defined on the exact same specializers.
    (let ((talent (make-instance 'standard-talent
  			       :name name
  			       :lambda-list lambda-list
  