Common Lisp the Language, 2nd Edition
The implementation of the Object System manipulates classes, methods, and generic
functions. The meta-object protocol specifies a set of generic
functions defined by methods on classes; the behavior of those generic
functions defines the behavior of the Object System. The instances of the classes
on which those methods are defined are called meta-objects. Programming
at the meta-object protocol level involves defining new classes of
meta-objects along with methods specialized on these classes.