I'm trying to make sure I fully understand the behavior of `try/catch`, specifically what state gets reverted when we catch an error. I could not be sure of certain behavior from [the v0.8.10 docs](https://docs.soliditylang.org/en/v0.8.10/control-structures.html). If I have code like:

```
otherContract.firstMethod()
try otherContract.secondMethod{value: 10, gas: 1000}() {}
catch (bytes memory) {
    // some code
}
```

Let's say that `otherContract.firstMethod` and `otherContract.secondMethod` both modify state within `otherContract`. If we end up in the catch block, am I correct in the following statements:

1. the state changes in `otherContract` made by `otherContract.firstMethod` will **not** be reverted
2. the state changes in `otherContract` made by `otherContract.secondMethod` will be reverted

From [this question](https://ethereum.stackexchange.com/questions/2428/does-throw-refund-the-ether-value) it appears that the 10 sent to `otherContract` will be refunded but any used gas will not be refunded.

Are all of the above correct? Anything incorrect?