`RewindBlockIndex` was made to allow nodes upgrading to new consensus rules post-segwit fork to 
download new consensus data (i.e witnesses) without having to go through a whole IBD. It has been pointed than now really few pre-segwit nodes care to upgrade and that this logic may be irrelevant.

See https://github.com/bitcoin/bitcoin/pull/17737#discussion_r358514335 in review  of #17737 for more context pointers.
#include <fs.h>
#include <node/utxo_snapshot.h>
#include <policy/feerate.h>
#include <protocol.h> 
#include <script/script_error.h>
#include <sync.h>
#include <txmempool.h> 
#include <txdb.h>
#include <versionbits.h>
#include <serialize.h>
#include <util/check.h>
#include <util/hasher.h>
#include <atomic>
#include <map>
#include <memory>
#include <optional>
#include <set>
#include <stdint.h>
#include <string>
#include <thread>
#include <utility>
#include <vector>
class CChainState;
class BlockValidationState;
class CBlockIndex;
class CBlockTreeDB;
class CBlockUndo;
class CChainParams;
struct CCheckpointData;
class CInv;