protected <M extends ClassMethodAbstract> M getClosestMatchInternal (Collection<M> members, Class... arguments) {
if (members == null) return null;
M match = null;
for (M member : members) {
ArgumentMatch result = member.compareArgumentTypes(arguments);
if (result == ArgumentMatch.EXACT) return member;
else if (result == ArgumentMatch.FUNCTIONAL && match == null)
match = member;
}
return match;