    function _burn(
        address operator,
        address from,
        uint256 amount,
        bytes memory data,
        bytes memory operatorData
    )
        private
    {
        require(from != address(0), "ERC777: burn from the zero address");
        _callTokensToSend(operator, from, address(0), amount, data, operatorData);
        _totalSupply = _totalSupply.sub(amount);
        _balances[from] = _balances[from].sub(amount);
        emit Burned(operator, from, amount, data, operatorData);
        emit Transfer(from, address(0), amount);
    }