(defclass object () ())
(defclass ship (object) ())
(defclass asteroid (object) ())
(defgeneric collide (a b))
(defmethod collide ((s ship) (o object))
(format t "Ship hits something: ~a" o))
(defmethod collide ((o object) (a asteroid))
(format t "Something ~a hits asteroid" o))
(defmethod collide ((a object) (b object))
(format t "Something ~a hits something ~a" a b))
(collide (make-instance 'ship) (make-instance 'asteroid))
KGRlZmNsYXNzIG9iamVjdCAoKSAoKSkKKGRlZmNsYXNzIHNoaXAgKG9iamVjdCkgKCkpCihkZWZjbGFzcyBhc3Rlcm9pZCAob2JqZWN0KSAoKSkKCihkZWZnZW5lcmljIGNvbGxpZGUgKGEgYikpCgooZGVmbWV0aG9kIGNvbGxpZGUgKChzIHNoaXApIChvIG9iamVjdCkpCiAgKGZvcm1hdCB0ICJTaGlwIGhpdHMgc29tZXRoaW5nOiB+YSIgbykpCgooZGVmbWV0aG9kIGNvbGxpZGUgKChvIG9iamVjdCkgKGEgYXN0ZXJvaWQpKQogIChmb3JtYXQgdCAiU29tZXRoaW5nIH5hIGhpdHMgYXN0ZXJvaWQiIG8pKQogIAooZGVmbWV0aG9kIGNvbGxpZGUgKChhIG9iamVjdCkgKGIgb2JqZWN0KSkKICAoZm9ybWF0IHQgIlNvbWV0aGluZyB+YSBoaXRzIHNvbWV0aGluZyB+YSIgYSBiKSkKCihjb2xsaWRlIChtYWtlLWluc3RhbmNlICdzaGlwKSAobWFrZS1pbnN0YW5jZSAnYXN0ZXJvaWQpKQ==