Because Java is nice - in that case it just uses the class ie Integer for the call as that what it expects to be there
In 'pure' Java you would write Integer.toHexString(99);
I would guess the generated java for the Sub would be like
Code:
public String name_of_the_sub(Object o, Integer arg){
Class<?> c = o.getClass();
...
return c.toHexString(arg);
}