sO invokeConstructorWithWidening(Constructor m, O... args) ctex { try { Class[] types = m.getParameterTypes(); int n = types.length; O[] args2 = new[n]; for i to n: args2[i] = convertPrimitiveIfNecessary(args[i], types[i]); ret m.newInstance(args2); } catch (IllegalArgumentException e) { throw new IllegalArgumentException(e.getMessage() + " - was calling: " + m + ", args: " + joinWithSpace(classNames(args))); } }