in src/main/java/org/apache/bsf/util/MethodUtils.java [51:72]
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);
}
}
}