There was discussion if it might be possible to omit the list of
invocation candidates and just give the "most common candidate" and
derive all others.
Please find below an example where this does not work for statically
types languages.
The client class invokes m() on an instance of B. m is implement in
A (B's superclass) and C and D (B's subclasses), but also in E (a
sibling of B). Lets assume we just store the "most common candidate"
A.m and derive candidates looking at subclasses, then we get the
false positive E.m!
Another case (which applies to dynamic languages too) is when m() is
invoked using a super send somewhere in D, and we just store A.m()
and we derive it now, again D.m and E.m and C.m are false positive.
So at least you need information about
receiver type
signature (not yet 1st class in FAMIX!)
kind of lookup (self, super, whatever...)
whereas the "most specific candidate" encodes implementing type and
signature as string.
So for now, maybe best is to just store all candidates in any case.
cheers,
Toon and AA