It looks like the problem is that the algorithm that find the most
specific match only looks at the arguments to the method call, and
ignores sorting on the most specific class. It compares each
candidate method call, and take the most recently 'best matched' call.
The list was being prepared from the base class to the super class,
so super class entries were compared later and were preferred. A
simple fix is to reverse the order of the list with super class
methods first, and base class methods later. Here is a patch that