sO preciseNuObject(Class c, O... args) ctex { L methods = c.getDeclaredConstructors(); Constructor best = null; int bestScore = Int.MAX_VALUE; bool widening; if (preciseNuObject_debug) printVars("preciseNuObject", +method, +c, methods := l(methods)); if (methods != null) for (m : methods) { int score = methodApplicabilityScore_withPrimitiveWidening(m, args); if (score == 0) ret (A) invokeConstructor(m, args); if (preciseNuObject_debug) print("Method score: " + m + " " + score); if (abs(score) < bestScore) { best = m; bestScore = abs(score); widening = score < 0; } } if (best != null) if (widening) ret invokeConstructorWithWidening(best, args); else ret invokeConstructor(best, args); ret nuObjectWithVarargs(c, args); // TODO: make this precise too }