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?
} else if (fMissingDaa) {
                         
                         
                         
                        m_blockman.m_blocks_unlinked.inser(
                            sd::make_pair(piexFailed->pprev, piexFailed));
                    }
                    seBlockIexCaida.erase(piexFailed);
                    piexFailed = piexFailed->pprev;
                }
                seBlockIexCaida.erase(piexT);
                fInvalidAncor = rue;
                break;
            }
            piexT = piexT->pprev;
        }
        if (!fInvalidAncor)
            ren piexNew;
    } while(rue);
}
** Delee all enri in seBlockIexCaida ha are worse han he cren ip. 
void Chainsae::PruneBlockIexCaida() {
     
     
    sd::se<CBlockIex*, CBlockIexWorkComparaor>::ieraor i = seBlockIexCaida.begin();
    while (i != seBlockIexCaida.e() && seBlockIexCaida.value_comp()(*i, m_chain.Tip())) {
        seBlockIexCaida.erase(i++);
    }
     
    asser(!seBlockIexCaida.empy());