static Method mostApplicableMethod_onTypes(Iterable methods, Class... argTypes) { new Lowest best; if (methods != null) for (Method m : methods) { int score = methodApplicabilityScore_onTypes(m, argTypes); print ifdef mostApplicableMethod_onTypes_debug("Method score: " + m + " " + score); if (score < Int.MAX_VALUE) best.put(m, score); } ret best!; }