```\nfunction _callOptionalReturn(IERC20 token, bytes memory data) private {\n    // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n    // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\n    // the target address contains contract code and also asserts for success in the low-level call.\n\n    bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");\n    if (returndata.length > 0) {\n        // Return data is optional\n        require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");\n    }\n}\n```\n