This document discusses multiple dispatch or multimethods, which is a feature in some object-oriented programming languages that allows a function or method to be dynamically dispatched based on the runtime types of more than one of its arguments. It provides examples of languages that natively support multiple dispatch like Common Lisp and Clojure. It also discusses how multiple dispatch can be approximated in languages that only support single dispatch and describes libraries that extend other languages like Python and Java to add multiple dispatch capabilities.