A generic function is uniquely identified by name. In order to
reference a generic function in other constructs before any of
its methods are declared, an explicit header
is necessary. Otherwise, the declaration of the first method implicitly
creates a header. For example, two generic functions whose methods
mutually call the other generic function (mutually recursive generic
functions) would require explicit headers.