(deftype tile-designator () '(or symbol (cons symbol (cons (integer 1) null)))) (defmethod shared-initialize :around ((army army) slots &key name hq-tiles tiles tile-count) (check-type name symbol) (check-type tile-count (integer 1)) (check-type hq-tiles list) (loop for cons on hq-tiles do (check-type (car cons) tile-designator)) (check-type tiles list) (loop for cons on tiles do (check-type (car cons) tile-designator)) (call-next-method army slots :name name :tile-count tile-count :hq-tiles hq-tiles :tiles tiles))