anchor.diff:                         :name "Kobe Bryant"
                          :team :LAKERS
                          :number 24)))
  -      (assert-equal ___ (nba-contract-start-year contract-1))
  -      (assert-equal ___ (type-of contract-1))
  +      (assert-equal 2004 (nba-contract-start-year contract-1))
  +      (assert-equal 'nba-contract (type-of contract-1))
         ;; do inherited structures follow the rules of type hierarchy?
  -      (true-or-false? ___ (typep contract-1 'BASKETBALL-PLAYER))
  +      (true-or-false? t (typep contract-1 'BASKETBALL-PLAYER))
         ;; can you access structure fields with the inherited accessors?
  -      (assert-equal ___ (nba-contract-team contract-1))
  -      (assert-equal ___ (basketball-player-team contract-1))))
  -
  +      (assert-equal :LAKERS (nba-contract-team contract-1))
  +      (assert-equal :LAKERS (basketball-player-team contract-1)))) 
   
   ;; Copying of structs is handled with the copy-{name} form.  Note that
   ;; copying is shallow.
  
positive.code: 
  (define-test test-struct-defaults
      (let ((player-2 (make-baseball-player)))
        (assert-equal ___ (baseball-player-position player-2))
        (assert-equal ___ (baseball-player-team player-2))
        (assert-equal ___ (baseball-player-name player-2))))
  
  
  ;; The accessor names can get pretty long.  It's possible to specify
  
negative.code:   (let ((player-1 (make-basketball-player
                     :name "larry" :team :celtics :number 33)))
      (assert-equal "larry" (basketball-player-name player-1))
      (assert-equal :celtics (basketball-player-team player-1))
      (assert-equal 33 (basketball-player-number player-1))
      (assert-equal 'basketball-player (type-of player-1))
      (setf (basketball-player-team player-1) :RETIRED)
      (assert-equal :RETIRED (basketball-player-team player-1))))
  
  
  ;; Struct fields can have default values
  