`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.
/**
 *  Actually unlink the specified files
 */
void UnlinkPrunedFiles(const std::set<int>& setFilesToPrune);
void PruneBlockFilesManual(CChainState& active_chainstate, int nManualPruneHeight);
/**
* Validation result for a single transaction mempool acceptance.
*/
struct MempoolAcceptResult {
    /** Used to indicate the results of mempool validation,
    * including the possibility of unfinished validation.
    */
    enum class ResultType {
        VALID, 
        INVALID, 
    };
    ResultType m_result_type;
    TxValidationState m_state;
    
    
    std::optional<std::list<CTransactionRef>> m_replaced_transactions;
    
    std::optional<CAmount> m_base_fees;
    
    explicit MempoolAcceptResult(TxValidationState state)
        : m_result_type(ResultType::INVALID), m_state(state) {
            Assume(!state.IsValid()); 
        }
    
    explicit MempoolAcceptResult(std::list<CTransactionRef>&& replaced_txns, CAmount fees)