Multiple inheritance and multiple dispatching are two sources of ambiguities in object-oriented languages. Solving ambiguities
can be performed automatically, using techniques such as totally ordering the supertypes of each type or taking the order
of the methods' arguments into account. Such implicit disambiguation has the drawback of being difficult to understand by
the programmer and hiding programming errors. Conversely, solving ambiguities can be left up to the explicit intervention
of the programmer. The most common explicit disambiguation technique in existing systems consists in defining new methods
for ambiguous invocations. However, finding ambiguities and adding as few methods as possible is a difficult task, especially
in multi-method systems. In this paper, we propose a tool to help the programmer solve multi-methods ambiguities. We show
that there always exists a unique minimal set of method redefinitions that explicitly disambiguate a set of multi-methods.
The tool offers two modes: batch, directly yielding the disambiguation set, or interactive, one signature of the disambiguation
set at a time, allowing the programmer to either accept the method redefinition or to solve the ambiguity in any other way,
which restarts the disambiguation algorithm. In both modes, for each method that is to be added, the programmer is given the
set of methods that caused the ambiguity as an explanation.
Keywords method dispatch - multi-methods - multiple inheritance - ambiguities