normal LilyPond input, using $ (in places where only
Lilypond constructs are allowed) or # (to use it as a Scheme
value or music function argument or music inside of music lists) to
reference arguments
(eg. ‘#arg1’).

The parser and location arguments are mandatory, and
are used in some advanced situations as described in the
‘Extending’ manual (see Music functions). For
substitution functions, just be sure to include them.

The list of type predicates is also required. Some of the most
common type predicates used in music functions are: