As well as defining slot names and types, a class can also associate an
\emph{initial value} with each slot defined by itself or one of its
superclasses. A class $C$ provides an \emph{initialization message} (see
-\xref{sec:concepts.lifecycle.birth}, and \xref{sec:structures.root.sodclass})
-whose methods set the slots of a \emph{direct} instance of the class to the
-correct initial values. If several of $C$'s superclasses define initializers
-for the same slot then the initializer from the most specific such class is
-used. If none of $C$'s superclasses define an initializer for some slot then
-that slot will be left uninitialized.
+\xref{sec:concepts.lifecycle.birth}, and
+\xref{sec:structures.root.sodobject}) whose methods set the slots of a
+\emph{direct} instance of the class to the correct initial values. If
+several of $C$'s superclasses define initializers for the same slot then the
+initializer from the most specific such class is used. If none of $C$'s
+superclasses define an initializer for some slot then that slot will be left
+uninitialized.
The initializer for a slot with scalar type may be any C expression. The
initializer for a slot with aggregate type must contain only constant