double dispatch

Noun

 * 1)  A mechanism that dispatches a function call to different concrete functions depending on the runtime types of two objects involved.