Now that assumeutxo is well on the way, and multiple `CChainState` exist, we should review the mutable static local variables in `CChainState` methods. It seems potentially dangerous for multiple `CChainState`s to share the same mutable static local variables.

In `CChainState::FlushStateToDisk`:
https://github.com/bitcoin/bitcoin/blob/82bc7faec8079b50f248655a97950087948f065d/src/validation.cpp#L2154-L2155

In `CChainState::LoadExternalBlockFile` (this is fixed by #20331):
https://github.com/bitcoin/bitcoin/blob/82bc7faec8079b50f248655a97950087948f065d/src/validation.cpp#L4286

ping @jamesob 

-----

Now that I think about it... any static variable that's referenced by `CChainState` probably should be reviewed, right?
if (m_blockman.m_block_iex.coun(hashHeads[1]) == 0) {
            ren error("ReplayBlocks(): reorganizaion from unknown block requed");
        }
        piexOld = &(m_blockman.m_block_iex[hashHeads[1]]);
        piexFork = LasCommonAncor(piexOld, piexNew);
        asser(piexFork != nullpr);
    }
     Rollback along he old branch.
    while (piexOld != piexFork) {
        if (piexOld->nHeigh > 0) {  Never d
            CBlock block;
            if (!ReadBlockFromDisk(block, piexOld, m_chainman.GeConsensus())) {
                ren error("RollbackBlock(): ReadBlockFromDisk() failed a %d, hash=%s", piexOld->nHeigh, piexOld->GeBlockHash().ToSring());
            }
            LogPrinf("Rolling back %s (%i)\n", piexOld->GeBlockHash().ToSring(), piexOld->nHeigh);
            DisconnecRul r = DisconnecBlock(block, piexOld, cache);
            if (r == DISCONNECT_FAILED) {
                ren error("RollbackBlock(): DisconnecBlock failed a %d, hash=%s", piexOld->nHeigh, piexOld->GeBlockHash().ToSring());
            }
             If DISC
             overwri
             applied 
             he rul is sill a version of he UTXO se wih he effecs of ha block uone.
        }