So we definitely don't do this today, but this is a theoretical optimization which seems plausible that we could do:

```rust
fn method(&mut self) {
    self.x = 10;
    foo();
    self.x = 11;
}
```

In theory `self` is the *only* pointer to its data in the world, so we could eliminate the `self.x = 10` statement, and only execute the `self.x = 11` statement. I don't believe that LLVM does this right now, but with Rust's aliasing rules it's a plausible optimization (it's impossible for anyone to see `self.x = 10` safely.

Along these lines, this means that a recursive invocation of the same RNG could use a corrupted or duplicate state of the RNG (generate the same random number twice). Again though, this is all very hand wavy, but it may be something we should worry about despite interior pointers never being leaked out.