The generic function describe-object prints a description of
object to a stream. describe-object is called
by describe; it must not be called by the user.
Each implementation is required to provide a method on
the class standard-object and methods on enough other
classes so as to ensure that there is always an applicable method.
Implementations are free to add methods for other classes.
Users can write methods for describe-object for their
own classes if they do not wish to inherit an implementation-supplied
method.
Methods on describe-object can recursively call
describe. Indentation, depth limits, and circularity detection
are all taken care of automatically, provided that each method
handles exactly one level of structure and calls describe
recursively if there are more structural levels. The consequences are
undefined if this rule is not obeyed.
In some implementations the stream argument passed to a
describe-object method is not the original stream, but is
an intermediate stream that implements parts of describe.
Methods should therefore not depend on the identity of this
stream.