anchor.diff:  
   ;;; Creatures, Players.
   
  -;; (defmodel      creature-controller       (:inflate      registered-at
  -;; #'datetime-to-timestamp) id registered-at)
  -
  -;; (defclass  creature-controller  ()   ((creature  :type  (or  creature
  -;;   (unsigned-byte            128)           null)            :accessor
  -;;   creature-controller-creature :initarg  :creature :documentation "If
  -;;   this  controller  is  currently  controlling a  creature,  this  is
  -;;   a  reference  to that  creature;  either  an  ID, or  the  creature
  -;;   object.")) (:documentation "A  base class used for  any entity (eg,
  -;;   player) who can control a character in the game in some way."))
  -
   (datafly:defmodel player
     "A  structure representing  a  player  who is  a  human  being in  the
    real world.
  
positive.code:               1)
             (if had-birthday-p 1 0))))))
  
  (eval-when (:compile-toplevel :execute :load-toplevel)
    ;; Promote the  DEFSTRUCT function to  a generic function that  we can
    ;; define a method AROUND.
    (warn "Redefining PLAYER-AGE around ~a"
          (symbol-function 'player-age))
    (let ((player-age-fn (symbol-function 'player-age)))
      (unless (typep player-age-fn 'generic-function)
        (fmakunbound 'player-age))
      (defgeneric player-age (player)
        (:documentation "Get the AGE of the PLAYER"))
      (when player-age-fn
        (defmethod player-age ((player player))
          (funcall player-age-fn player)))))
  
  (defmethod player-age :around (player)
    "This  AROUND method  will define  the PLAYER's  age based  upon their
  date-of-birth   (`PLAYER-DATE-OF-BIRTH')   rather    than   the   stored
  `PLAYER-AGE' slot-value, when the date of birth is known."
    (let ((dob (player-date-of-birth player)))
      (if dob
          (let ((legal-age (legal-age dob))
                (recorded-age (call-next-method)))
            (unless (= legal-age recorded-age)
              (setf (player-age player) legal-age))
            legal-age)
          (call-next-method))))
  
  (defun player-adult-p (player)
    "Reurns a generalized true value if PLAYER is 18 or older.
  
negative.code: 
  The player's date of birth, if it is known.
  
  @item AGE%
  
  The  player's age,  if  it  is known.  Note  that  the related  function
  `PLAYER-AGE'  will  compute the  age  from  the date-of-birth  when  one
  is present.
  
  For sanity-checking purposes only, the age  is clamped to 0…130. This is
  mostly to detect the not-uncommon  data-entry error of someone supplying
  a  two-digit year-of-birth  that  is later  interpreted  as their  being
  1,900+ years old.
  
  Do  not call  `PLAYER-AGE%'  directly, please.  Use `PLAYER-AGE',  which
  falls back upon computing from the player's date-of-birth.
  
  @end itemize"
    (id (binary<-uuid (uuid:make-v4-uuid))
  