we mostly use pre-calculated indexes, ie integers but registers are allowed (in arm/risc), so we try to check the registers type at least is right. The return is really a machine word, but we call it Object (yes, more work that way)