If you want to add multidispatch, multimethods, generic functions what have you to a language, you need a way to specify, when declaring a method, for any parameter, not just the first or the receiver, that this method should execute only when the corresponding argument is of the sort specified for this method. In CLOS, these designators are called specializers.

One way to introduce specializers and multimethods into your language is to extend the syntax of the language somehow. This slide illustrates how three languages that allow multimethods, CLOS, Dylan and Cecil, did so.

(More could be said about generic functions, multimethods, specializers, etc. here, were time to have permitted this.)