For now this works as follows: * `T&&` is mapped to a by-value `param: T` parameter. * `T&` is mapped to an `addr param: T*` parameter. In either case, we will generate a thunk, which will internally pass the parameter as a pointer.