private bool ValidateTheMergeChecks(BlockHeader header)
        {
            bool validDifficulty = true, validNonce = true, validUncles = true;

            (bool IsTerminal, bool IsPostMerge)switchInfo = _poSSwitcher.GetBlockConsensusInfo(header);
            bool terminalTotalDifficultyChecks = ValidateTerminalTotalDifficultyChecks(header, switchInfo.IsTerminal);

            if (switchInfo.IsPostMerge)
            {
                validDifficulty = ValidateHeaderField(header, header.Difficulty, UInt256.Zero, nameof(header.Difficulty));
                validNonce      = ValidateHeaderField(header, header.Nonce, 0u, nameof(header.Nonce));
                validUncles     = ValidateHeaderField(header, header.UnclesHash, Keccak.OfAnEmptySequenceRlp, nameof(header.UnclesHash));
            }

            return(terminalTotalDifficultyChecks &&
                   validDifficulty &&
                   validNonce &&
                   validUncles);
        }
 //  ...and gossipping policy will be decided according to the header difficulty.
 public bool ShouldGossipBlock(BlockHeader header) => !_poSSwitcher.GetBlockConsensusInfo(header).IsPostMerge;
 public bool ValidateSeal(BlockHeader header, bool force) =>
 _poSSwitcher.GetBlockConsensusInfo(header, true).IsPostMerge || _preMergeSealValidator.ValidateSeal(header, force);