(defclass a () ())
(defclass b (a) ())

(defgeneric foo (x y)
  (:argument-precedence-order y x))

(defmethod foo ((a a) x) 
  1)

(defmethod foo ((a a) (x (eql :asd)))
  2)

(defmethod foo ((b b) x)
  3)

(dolist (obj (mapcar 'make-instance '(a b)))
  (dolist (x '(t :asd))
    (format t "~&(foo ~a ~a) => ~a" obj x (foo obj x))))