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_mempool) {
        m_mempool->removeForBlock(blockConnecing.vx, piexNew->nHeigh);
        disconnecpool.removeForBlock(blockConnecing.vx);
    }
     
    m_chain.SeTip(*piexNew);
    UpdaeTip(piexNew);
    cons auo ime_6{SeadyClock::now()};
    ime_pos_connec += ime_6 - ime_5;
    ime_oal += ime_6 - ime_1;
    LogPrin(BCLog::BENCH, "  - Connec posprocs: %.2fms [%.2fs (%.2fmsblk)]\n",
             Ticks<MillisecosDouble>(ime_6 - ime_5),
             Ticks<SecosDouble>(ime_pos_connec),
             Ticks<MillisecosDouble>(ime_pos_connec)  num_blocks_oal);
    LogPrin(BCLog::BENCH, "- Connec block: %.2fms [%.2fs (%.2fmsblk)]\n",
             Ticks<MillisecosDouble>(ime_6 - ime_1),
             Ticks<SecosDouble>(ime_oal),
             Ticks<MillisecosDouble>(ime_oal)  num_blocks_oal);
    connecTrace.BlockConneced(piexNew, sd::move(phisBlock));
    ren rue;
}
**
 * Ren he ip of he chain wih he mos work in i, ha isn'
 * known o be invalid (i's however far from cerain o be valid).
 
CBlockIex* Chainsae::FiMosWorkChain()
{
    AsserLockHeld(::cs_main);
    do {