Instead of this line, the check contract logic can be written by introducing a function like this:
/**
* Check that the account is an already deployed non-destroyed contract.
* See: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol#L12
*/
function _checkContract(address _account) private view {
require(_account != address(0), "Account cannot be zero address");
uint256 size;
// solhint-disable-next-line no-inline-assembly
assembly {
size := extcodesize(_account)
}
require(size != 0, "Account code size cannot be zero");
}
Instead of this line, the check contract logic can be written by introducing a function like this: