Procedures for working with offsets are found in @file{scm/lily-library.scm}.
-@unnumberedsubsubsec Extents
@subheading Extents
Pairs are also used to store intervals, which represent a range of numbers
@file{scm/lily-library.scm}. These procedures should be used when possible
to ensure consistency of code.
-@unnumberedsubsubsec Property alists
@subheading Property alists
A property alist is a LilyPond data structure that is an alist whose
LilyPond properties are Scheme symbols, such as @code{'thickness}.
-@unnumberedsubsubsec Alist chains
@subheading Alist chains
An alist chain is a list containing property alists.
order, looking for an entry containing the property key. The first alist
entry found is returned, and the value is the property value.
-The Shceme procedure @code{chain-assoc-get} is normally used to get
+The Scheme procedure @code{chain-assoc-get} is normally used to get
grob property values.
@node Internal music representation
@node Music properties
@subsection Music properties
+TODO -- make sure we delineate between @emph{music} properties,
+@emph{context} properties, and @emph{layout} properties. These
+are potentially confusing.
+
The @code{NoteEvent} object is the first object of the
@code{'elements} property of @code{someNote}.