This week's book giveaway is in the Mac OS forum. We're giving away four copies of a choice of "Take Control of Upgrading to Yosemite" or "Take Control of Automating Your Mac" and have Joe Kissell on-line! See this thread for details.
It seems i figured this after changing line three to
I think it is because at line three second arg is 1 which is int value, and as there is no method for (Integer, Integer, Character) or (int, int, char) it is promoted to float, but it is not possible to promote and then autobox, so the primitive method is called for (int,float,char).
But at line 4 the value can be autoboxed to Integer, or other values can be unboxed to primitives (and in my example the same thing) - so here compiler goes mad.
and if you change line 4:
just because the only possibke change here is promoting byte to int, and no boxing after that is possible, so other arguments go outboxed and primitive method for (int, float, char) is called