in src/main/java/org/apache/bsf/util/MethodUtils.java [63:90]
void addItem (final Object newEntry)
{
if(size()==0) {
addElement(newEntry);
} else
{
final Class[] newargs=entryGetParameterTypes(newEntry);
boolean keep=true;
for (final Enumeration e = elements();
keep & e.hasMoreElements() ;
)
{
final Object oldEntry=e.nextElement();
// CAVEAT: Implicit references to enclosing class!
final Class[] oldargs=entryGetParameterTypes(oldEntry);
if(areMethodConvertable(oldargs,newargs)) {
removeElement(oldEntry); // New more specific; discard old
} else if(areMethodConvertable(newargs,oldargs))
{
keep=false; // Old more specific; discard new
// Else they're tied. Keep both and hope someone beats both.
}
}
if(keep) {
addElement(newEntry);
}
}
}