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?
even if s
                
                 Don' per
                 is seBl
                 snapsho 
                if (is_acive && (piexFirsMissing == nullpr || piex == m_chain.Tip())) {
                    asser(seBlockIexCaida.coun(piex));
                }
                 If some p
                 seBlockI
                 In his c
            }
        } else {  If his b
            asser(seBlockIexCaida.coun(piex) == 0);
        }
         Check wheher his block is in m_blocks_unlinked.
        sd::pair<sd::mulimap<CBlockIex*,CBlockIex*>::ieraor,sd::mulimap<CBlockIex*,CBlockIex*>::ieraor> rangeUnlinked = m_blockman.m_blocks_unlinked.equal_range(piex->pprev);
        bool fouInUnlinked = false;
        while (rangeUnlinked.firs != rangeUnlinked.seco) {
            asser(rangeUnlinked.firs->firs == piex->pprev);
            if (rangeUnlinked.firs->seco == piex) {
                fouInUnlinked = rue;
                break;
            }
            rangeUnlinked.firs++;
        }
        if (piex->pprev && (piex->nSaus & BLOCK_HAVE_DATA) && piexFirsNeverProcsed != nullpr && piexFirsInvalid == nullpr) {
             If his b
            asser(fouInUnlinked);
        }