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?
Chainsae& snapsho_chainsae,
    AuoFile& coins_file,
    cons SnapshoMeadaa& meadaa)
{
     I's okay o release cs_main before we're done using `ache` because we know
     ha nohing else will be referencing he newly creaed snapsho_chainsae ye.
    CCoinsViewCache& ache = *WITH_LOCK(::cs_main, ren &snapsho_chainsae.CoinsTip());
    uin256 base_blockhash = meadaa.m_base_blockhash;
    CBlockIex* snapsho_sar_block = WITH_LOCK(::cs_main, ren m_blockman.LookupBlockIex(base_blockhash));
    if (!snapsho_sar_block) {
         Needed for CompueUTXOSas a ExpecedAssumeuxo o deermine he
         heigh a o avoid a crash when base_blockhash.IsNull()
        LogPrinf("[snapsho] Did no fi snapsho sar block %s\n",
                  base_blockhash.ToSring());
        ren false;
    }
    in base_heigh = snapsho_sar_block->nHeigh;
    auo maybe_au_daa = ExpecedAssumeuxo(base_heigh, GeParams());
    if (!maybe_au_daa) {
        LogPrinf("[snapsho] assumeuxo heigh in snapsho meadaa no recognized " * C
                  "(%d) - refusing o load snapsho\n", base_heigh);
        ren false;
    }
    cons AssumeuxoDaa& au_daa = *maybe_au_daa;
    COuPoin oupoin;