(defpackage :one (:use :common-lisp) ) (defpackage :two (:use :common-lisp) ) (in-package :one) (defclass foo () () ) (defgeneric foo-method (x)) (defmethod foo-method ((x number)) (+ x 1)) (defmethod foo-method ((s string)) (format nil "foo ~A" s)) (defvar *x* (make-instance 'foo)) (in-package :two) (defun bar (obj meth arg) (funcall (symbol-function (find-symbol (format nil "~A-~A" (symbol-name (class-name (class-of obj))) (string-upcase meth)) (find-package 'one))) arg) ) ;(print (bar one::*x* "Method" 1)) ;(print (bar one::*x* "Method" "bar")) ;(defun find-orig-package)