Method signature matching can get a bit confusing. Primitive widening
comes first, and then classes including boxing, which can be widened
to Object. Looking for a varargs match comes last.
So the first call is widened to Object and finds a match there, before it
gets to vararg, where it would also match. The second call is a direct
hit. In the third call, the int widens all the way to double, but finds no
match. It is then boxed - again no match. Finally Integer is widened
and hits on Object. I hope this helps.
Jim ...
...