(define-struct-clause :food-box (food-type :form form) (unless (subtypep food-type 'edible) (compile-error form "~s requires edible type, not ~s" :food-box food-type)) ^(food (:method set-food (me food) (unless (typep food ',food-type) (error "~s: requires ~s object, not ~s" %fun% ',food-type food)) (set me.food food))))