anchor.diff:     (account-number 0 :reader 'account-number)
      (account-type :bronze)))
   
  -(defreply init-sheep :after ((account =bank-account=) &key)
  +(defreply init-object :after ((account =bank-account=) &key)
     (setf (property-value account 'account-number) (incf *max-acc-num*)))
   
   ;; SHEEPLE-USER> (property-value =bank-account= 'customer-name) => "NoName"
  
positive.code: 
  ;; You can also inspect objects and their internals at the REPL...
  ;;
  ;; SHEEPLE-USER> (property-summary *janes-account*)
  ;; Sheep: #<Sheep [=BANK-ACCOUNT=] #x1501FDF6>
  ;; Properties:
  
  ;;    Name:     CUSTOMER-NAME
  ;;    Value:    "Jane Doe"
  ;;    Owner:    #<Sheep [=BANK-ACCOUNT=] #x1501FDF6>
  
  ;;    Name:     BALANCE
  ;;    Value:    1000
  ;;    Owner:    #<Sheep [=BANK-ACCOUNT=] #x1501FDF6>
  
  ;;    Name:     ACCOUNT-NUMBER
  ;;    Value:    6
  ;;    Owner:    #<Sheep [=BANK-ACCOUNT=] #x1501FDF6>
  
  ;;    Name:     ACCOUNT-TYPE
  ;;    Value:    :BRONZE
  ;;    Owner:    #<Sheep =BANK-ACCOUNT= #x14FBC12E>
  
  ;;    Name:     NICKNAME
  ;;    Value:    =BANK-ACCOUNT=
  ;;    Owner:    #<Sheep =BANK-ACCOUNT= #x14FBC12E>
  
  ;; NIL
  ;; SHEEPLE-USER>
  ;; the [=foo=] name means that the object is inheriting the :nickname property, whereas
  ;; the same without [] means the object's nickname is set locally.
  
  (defmessage withdraw (account amount)
    (:documentation "Withdraw the specified amount from the account.
  Signal an error if the current balance is less than AMOUNT."))
  (defreply withdraw ((account =bank-account=) amount)
    (when (< (balance account) amount)
      (error "Account overdrawn."))
    (decf (balance account) amount))
  
  (defreply withdraw :before ((account =checking-account=) amount)
    (let ((overdraft (- amount (balance account))))
  
negative.code: (defreply withdraw ((proxy =proxy-account=) amount)
    (withdraw (proxied-account proxy) amount))
  
  (defreply withdraw :before ((account *account-of-bank-president*) amount
                              &aux (overdraft (- amount (balance account))))
    (when (plusp overdraft)
      (incf (balance account) (embezzle *bank* overdraft))))
  
  (defreply assess-low-balance-penalty ((account =bank-account=))
    (with-properties ((bal balance)) account
  