```\n    function cancel() external onlyPayerOrRecipient {\n        address payer_ = payer();\n        address recipient_ = recipient();\n        IERC20 token_ = token();\n\n        uint256 recipientBalance = balanceOf(recipient_);\n\n        // This zeroing is important because without it, it's possible for recipient to obtain additional funds\n        // from this contract if anyone (e.g. payer) sends it tokens after cancellation.\n        // Thanks to this state update, `balanceOf(recipient_)` will only return zero in future calls.\n        remainingBalance = 0;\n\n        if (recipientBalance > 0) token_.safeTransfer(recipient_, recipientBalance);\n```\n