“…For instance, they could wish to have a double-dispatch mechanism to ease implementations dealing with tree-like structures or binary methods [4,17]. This feature, which is a special case of multi-methods [11,21,8,3,22,23,10,12,1,27,2,14], allows a method implementation to be chosen with respect to the dynamic type (late-binding) of both the receiver and a single argument. It can be achieved programmatically through the visitor design pattern [19,15].…”