SBCL supports a metaobject protocol which is intended to be compatible with AMOP; present exceptions to this (as distinct from current bugs) are:
metaobject class is not present in the class
hierarchy;
standard-object and funcallable-standard-object
classes are disjoint;
compute-effective-method only returns one value, not two;
:around method for compute-slots
specialized on funcallable-standard-class does not respect the
requested order from a user-supplied primary method.
:declare and :declarations to
ensure-generic-function are both accepted, with the leftmost
argument defining the declarations to be stored and returned by
generic-function-declarations.