According to the K&S book (page 249)
In every case, when an exact match isn't found, the JVM uses the method with the smallest argument that is wider than the parameter
The above is correct if the parameters are primitives that are wider than the argument as in the following two examples:
Widening:
Widening & Boxing
Both the above two example output "in int" which is fine.
It is different though if the paramters are var-args. In the following example, the compiler complains that the paramters in the go() method are ambiguous.
Why does it not apply the same rules? Why does it not choose the smallest argument that is larger than the argument (i.e. int... in the above example) as in the previous examples?