Comment 2 for bug 1814367

In other words, you need to define a class, define a function that makes its instances via MAKE-INSTANCE with a symbol, then replace the class bound to that class name with a funcallable class. Ugly, but a valid edge case.

However, this still fails when MAKE-INSTANCE is given a class instead of a class name:

* (defclass foo () ())
#<STANDARD-CLASS COMMON-LISP-USER::FOO>
* (defun bar () (break (make-instance #.(find-class 'foo))))
BAR ;; no warning

The object given to MAKE-INSTANCE is not funcallable since CHANGE-CLASS does not work on class metaobjects.