This improvement to this function allows us to make the moving of the value explicit. It also allows us to remove the flag indicating the value has been moved, and actually move this validation to profiling tools, also known as poison-after-use. This change also removes the unnecessary uses of `TakeBody` for cases where a const reference were enough.