sbool preciseCall_debug; static Object preciseCall(Object o, String method, Object... args) ctex { if (o cast Class) { _MethodCache cache = callOpt_getCache(o); L methods = cache.cache.get(method); //L methods = findMethodsNamed2(o, method, true); new Lowest best; if (methods != null) for (Method m : methods) { continue unless isStaticMethod(m); int score = methodApplicabilityScore(m, args); if (score < Int.MAX_VALUE) { if (preciseCall_debug) print("Method score: " + m + " " + score); best.put(m, score); } } Method m = best!; if (m != null) ret invokeMethod(m, null, args); ret call_withVarargs(o, method, args); // TODO: make this precise too } else throw todo(); }