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.