This seems to be to be nothing more than applying the same idea behind objects and interfaces to other types... if all variables were typed Object and you had:
interface Int {}
interface String {}
void whatever(Int lineno, String rawdata) {}
it'd be the same thing, would it not?
