    function _approve(address holder, address spender, uint256 value) private {
        require(spender != address(0), "ERC777: approve to the zero address");
        _allowances[holder][spender] = value;
        emit Approval(holder, spender, value);
    }