Just pass around the pointers in codegen since the object lifetime is known
Better type checking and literal constant checking